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
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.
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).
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
Respostas:
Isso é apenas avisando que você tem alterações enviadas para o branch
origin
, mas elas não são mescladasmaster
, 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
fonte
master
não está envolvido nisso. Você quer dizer o ramo atual, melhor.;)
git branch -d branch_name
que supostamente exclui apenas o branch localmente. Por que o aviso é necessário neste caso?Presumindo que você tenha feito
master
check-out, significa que as alterações feitas emold_branch
não estão presentes emmaster
. No entanto, eles estão presentes emold_branch
onorigin
.fonte
HEAD
",HEAD
aqui faz referência ao HEAD do branch master local.master
check-out localmente, ainda pode ocorrer se o SHA de qualquer um dos commits foi alterado; ou seja, você baseou novamenteorigin/old_branch
emorigin/master
. Mesmo se fosse um avanço rápido, isso gerará um novo SHA para cada novo commit deorigin/old_branch
, fazendo com que o git veja os SHAs originais em seu localold_branch
como não mesclados após puxar as alterações para seumaster
branch local . Você pode ver esta resposta e esta resposta para saber por que isso ocorre.Isso significa que seu branch local
old_branch
está atualizado com o branch remotoold_branch
no remoto,origin
mas não está mesclado com o branchmaster
que é 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_branch
no 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-D
que éforce-delete
opcional).fonte
master
, mas o atualHEAD
.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
fonte