O Git está avisando que você pode perder o histórico excluindo este ramo. Mesmo que na verdade não exclua nenhuma confirmação imediatamente, algumas ou todas as confirmações na ramificação se tornarão inacessíveis se elas também não fizerem parte de outra ramificação.
Para que a ramificação experiment
seja "totalmente mesclada" em outra ramificação, seu commit de dica deve ser um ancestral da dica do outro branch, fazendo com que o commit seja feito em experiment
um subconjunto do outro branch. Isso torna seguro excluir experiment
, pois todas as confirmações permanecerão parte do histórico do repositório por meio de outra ramificação. Ele deve ser mesclado "totalmente", porque já pode ter sido mesclado várias vezes, mas agora foram adicionados commit desde a última mesclagem que não está contida no outro ramo.
O Git não verifica todos os outros ramos do repositório; só dois:
- O ramo atual (HEAD)
- O ramo upstream, se houver um
O "ramo upstream" para experiment
, como no seu caso, é provavelmente origin/experiment
. Se experiment
for totalmente mesclado no ramo atual, o Git o excluirá sem reclamação. Se não estiver, mas estiver totalmente mesclado em sua ramificação upstream, o Git continuará com um aviso parecido com:
warning: deleting branch 'experiment' that has been merged
to 'refs/remotes/origin/experiment', but not yet merged to
HEAD.
Deleted branch experiment (was xxxxxxxx).
Onde xxxxxxxx
indica um ID de confirmação. Ser totalmente mesclado no upstream indica que as confirmações experiment
foram enviadas para o repositório de origem, para que, mesmo que você as perca aqui, elas possam pelo menos ser salvas em outro lugar.
Como o Git não verifica outros ramos, pode ser seguro excluir um ramo porque você sabe que ele está totalmente mesclado em outro; você pode fazer isso com a -D
opção indicada, ou alternar para esse ramo primeiro e deixar o Git confirmar o status totalmente mesclado para você.