git branch -d dá um aviso

95

Só quero entender melhor a mensagem de aviso depois de excluir uma filial local

aviso: excluindo ramificação 'old_branch'que foi mesclada 'refs/remotes/origin/old_branch', mas ainda não foi mesclada HEAD.

user1322228
fonte
31
se você mesclar --squash seu old_branch, você receberá este aviso sempre ao excluí-lo localmente. Ao comprimir, seu índice é redefinido, portanto, não corresponde a old_branch HEAd
Antoine Wils
Embora as outras respostas estejam corretas, o comentário de Antoine foi a razão, pelo menos no meu caso.
Squrppi

Respostas:

67

Isso é apenas avisando que você tem alterações enviadas para o branch origin, mas elas não são mescladas master, então você está apenas excluindo-as localmente.

Ele está avisando que você não tem mais uma cópia local desse branch, mas ela existe em origin

Se você quiser excluir o branch remoto também, use git push --delete origin old_branch

cjhveal
fonte
9
Sim, masternão está envolvido nisso. Você quer dizer o ramo atual, melhor. ;)
Fernando Espinosa
1
Recebo este aviso mesmo se eu fizer um git branch -d branch_nameque supostamente exclui apenas o branch localmente. Por que o aviso é necessário neste caso?
Akshay Damle de
2
Mas origin / old_branch é mesclado em origin / master. Mais tarde, fiz git pull origin no branch master. Ainda é o mesmo erro. Não é esse bug no GH?
vikramvi
38

Presumindo que você tenha feito mastercheck-out, significa que as alterações feitas em old_branchnão estão presentes em master. No entanto, eles estão presentes em old_branchon origin.

Karl Bielefeldt
fonte
4
Sim. Essa é a resposta correta! "mas ainda não mesclado com HEAD", HEADaqui faz referência ao HEAD do branch master local.
Devy,
3
Mas origin / old_branch é mesclado em origin / master. Mais tarde, fiz git pull origin no branch master. Ainda é o mesmo erro. Não é esse bug no GH?
vikramvi
1
@vikramvi Supondo que você tenha feito mastercheck-out localmente, ainda pode ocorrer se o SHA de qualquer um dos commits foi alterado; ou seja, você baseou novamente origin/old_branchem origin/master. Mesmo se fosse um avanço rápido, isso gerará um novo SHA para cada novo commit de origin/old_branch, fazendo com que o git veja os SHAs originais em seu local old_branchcomo não mesclados após puxar as alterações para seu masterbranch local . Você pode ver esta resposta e esta resposta para saber por que isso ocorre.
8

Isso significa que seu branch local old_branchestá atualizado com o branch remoto old_branchno remoto, originmas não está mesclado com o branch masterque é considerado o branch principal no repo.

É apenas uma precaução do git. Isso lhe dá uma dica: talvez você tenha feito seu trabalho no branch de tópico e se esquecido de mesclá-lo com o branch principal?


atualizar

Git avisa você para não perder suas alterações. Por exemplo, se você não tem o seu old_branchno git master, não permita que você nem mesmo apague o branch que não foi mesclado com o master (bem, permite, mas com a chave -Dque é force-deleteopcional).

Max Komarychev
fonte
7
Não necessariamente master, mas o atual HEAD.
Frozen Flame de
Então o -D é quando você não compartilhou o branch que está sendo excluído (na verdade, são os commits) com nenhum branch remoto. Enquanto o aviso é para informá-lo que você compartilhou o branch (commits) com o remoto, mas ele simplesmente não está mesclado no HEAD. HEAD é HEAD, remote / refs / HEAD não é o mesmo. Mas, por favor, corrija-me se eu estiver errado em relação às diferenças entre o HEAD remoto e o HEAD local.
Eric
7

Para aumentar as outras respostas, isso também pode significar que a alteração pode ser mesclada ao master, apenas que sua cópia local do master ainda não reflete isso. De qualquer forma, isso apenas informa que a cópia local de seu mestre não tem as alterações que você empurrou na origem. Mesclado / Não mesclado ... talvez, talvez não

Mithun Nair
fonte