git branch -d donne un avertissement


91

Je veux juste avoir une meilleure compréhension du message d'avertissement après avoir supprimé une branche locale

avertissement: suppression de la branche 'old_branch'qui a été fusionnée 'refs/remotes/origin/old_branch'mais pas encore fusionnée HEAD.


29
si vous fusionnez --squash votre old_branch, vous recevrez toujours cet avertissement lorsque vous le supprimerez localement. Lors de l'écrasement, votre index est réinitialisé et ne correspond donc pas à old_branch HEAd
Antoine Wils

Bien que les autres réponses soient correctes, le commentaire d'Antoine en était la raison au moins dans mon cas.
Squrppi

Réponses:


66

Cela vous avertit simplement que vous avez appliqué des modifications à la branche origin, mais qu'elles ne sont pas fusionnées master, vous ne les supprimez donc que localement.

Il vous avertit que vous n'avez plus de copie locale de cette branche, mais qu'elle existe dans origin

Si vous souhaitez également supprimer la branche distante, utilisez git push --delete origin old_branch


9
Ouais, mastern'est pas impliqué dans ça. Vous parlez plutôt de la branche actuelle. ;)
Fernando Espinosa

1
Je reçois cet avertissement même si je fais un git branch -d branch_namequi est censé supprimer uniquement la branche localement. Pourquoi l'avertissement est-il nécessaire dans ce cas?
Akshay Damle

2
Mais origin / old_branch est fusionné dans origin / master. Plus tard, j'ai fait git pull origin sur la branche master. Toujours la même erreur. N'est-ce pas ce bug dans GH?
vikramvi

36

En supposant que vous ayez actuellement masterextrait, cela signifie que les modifications apportées old_branchne sont pas présentes dans master. Cependant, ils sont présents old_branchsur origin.


4
Oui. C'est la bonne réponse! "mais pas encore fusionné avec HEAD", la HEADréférence ici à la tête de la branche principale locale.
Devy

3
Mais origin / old_branch est fusionné dans origin / master. Plus tard, j'ai fait git pull origin sur la branche master. Toujours la même erreur. N'est-ce pas ce bug dans GH?
vikramvi

1
@vikramvi En supposant que vous avez masterextrait localement, cela peut toujours se produire si le SHA de l'un des commits a changé; c'est-à-dire que vous avez rebasé origin/old_branchsur origin/master. Même s'il s'agissait d'une avance rapide, cela générera un nouveau SHA pour chaque nouveau commit à partir de origin/old_branch, ce qui amènera git à voir les SHA d'origine dans votre local old_branchcomme non fusionnés après avoir transféré les modifications dans votre masterbranche locale . Vous pouvez voir cette réponse et cette réponse pour savoir pourquoi cela se produit.

8

Cela signifie que votre branche locale old_branchest à jour avec la branche distante old_branchsur distant originmais qu'elle n'est pas fusionnée avec la branche masterqui est considérée comme la branche principale du dépôt.

C'est juste une précaution de git. Cela vous donne un indice: peut-être avez-vous fait votre travail dans la branche thématique et oublié de le fusionner dans la branche principale?


mise à jour

Git vous avertit de ne pas perdre vos modifications. Par exemple, si vous n'avez pas votre old_branchgit sur le maître, ne vous autorisez même pas à supprimer la branche non fusionnée avec le maître (enfin, cela permet, mais avec la clé -Dqui est force-deleteoption).


7
Pas nécessairement master, mais le courant HEAD.
Frozen Flame

Donc, le -D est lorsque vous n'avez pas partagé la branche supprimée (en fait, c'est commits) avec une branche distante. Bien que l'avertissement soit pour vous informer que vous avez partagé la branche (commits) avec la télécommande, mais qu'elle n'est tout simplement pas fusionnée dans HEAD. HEAD est HEAD, remote / refs / HEAD n'est pas la même chose. Mais veuillez me corriger si je me trompe en ce qui concerne les différences entre la tête distante et la tête locale.
Eric

7

Pour ajouter aux autres réponses, cela peut également signifier que le changement peut être fusionné avec master, simplement que votre copie locale de master ne le reflète pas encore. Dans les deux cas, cela vous informe simplement que la copie locale de votre master ne contient pas les modifications que vous avez apportées à l'origine. Fusionné / Non fusionné ... peut-être, peut-être pas

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.