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.


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


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.


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).


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.