Git Branch -d gibt Warnung


87

Ich möchte nur ein besseres Verständnis der Warnmeldung erhalten, nachdem ich einen lokalen Zweig gelöscht habe

Warnung: Löschen eines Zweigs 'old_branch', der mit 'refs/remotes/origin/old_branch', aber noch nicht zusammengeführt wurde HEAD.


26
Wenn Sie --squash your old_branch zusammenführen, wird diese Warnung immer angezeigt, wenn Sie sie lokal löschen. Wenn Squashing Ihr Index zurückgesetzt wird, stimmt daher nicht mit old_branch HEAd
Antoine Wils

Während die anderen Antworten richtig sind, war Antoines Kommentar zumindest in meinem Fall der Grund.
Squrppi

Antworten:


67

Dies warnt Sie nur davor, dass Änderungen in den Zweig verschoben originwurden, diese jedoch nicht zusammengeführt werden master, sodass Sie sie nur lokal löschen.

Es warnt Sie, dass Sie keine lokale Kopie dieses Zweigs mehr haben, diese jedoch in vorhanden ist origin

Wenn Sie auch den Remote-Zweig löschen möchten, verwenden Sie git push --delete origin old_branch


8
Ja, masterist daran nicht beteiligt. Sie meinen eher den aktuellen Zweig. ;)
Fernando Espinosa

1
Ich erhalte diese Warnung auch dann, wenn ich eine mache, git branch -d branch_namedie nur den Zweig lokal löschen soll. Warum ist die Warnung in diesem Fall erforderlich?
Akshay Damle

2
Origin / old_branch wird jedoch mit origin / master zusammengeführt. Später habe ich den Ursprung auf dem Hauptzweig gezogen. Immer noch der gleiche Fehler. Ist das nicht ein Fehler in GH?
Vikramvi

35

Angenommen, Sie haben gerade masterausgecheckt, bedeutet dies, dass die vorgenommenen Änderungen in old_branchnicht vorhanden sind master. Sie sind jedoch in old_branchon vorhanden origin.


3
Ja. Das ist die richtige Antwort! "aber noch nicht zusammengeführt mit HEAD", die HEADhier auf den HEAD der lokalen Hauptniederlassung verweisen.
Devy

3
Origin / old_branch wird jedoch mit origin / master zusammengeführt. Später habe ich den Ursprung auf dem Hauptzweig gezogen. Immer noch der gleiche Fehler. Ist das nicht ein Fehler in GH?
Vikramvi

1
@vikramvi Angenommen, Sie haben masterlokal ausgecheckt , kann es dennoch vorkommen, dass sich die SHA eines der Commits geändert hat. dh du bist origin/old_branchauf Basis origin/master. Selbst wenn es sich um einen schnellen Vorlauf handelte, wird für jedes neue Commit von ein neuer SHA generiert origin/old_branch, sodass git die ursprünglichen old_branchSHAs in Ihrem lokalen Bereich als nicht zusammengeführt ansieht, nachdem die Änderungen in Ihren lokalen masterZweig übernommen wurden. Sie können diese Antwort und diese Antwort sehen, warum dies auftritt.

7

Um die anderen Antworten zu ergänzen, kann dies auch bedeuten, dass die Änderung möglicherweise mit dem Master zusammengeführt wird, nur dass Ihre lokale Kopie des Masters dies noch nicht widerspiegelt. In beiden Fällen werden Sie lediglich darüber informiert, dass die lokale Kopie Ihres Masters nicht die Änderungen enthält, die Sie am Ursprung vorgenommen haben. Zusammengeführt / Nicht zusammengeführt ... vielleicht, vielleicht nicht


7

Dies bedeutet, dass Ihre lokale Filiale old_branchmit der Remote-Filiale old_branchauf der Remote-Filiale auf dem neuesten Stand originist, jedoch nicht mit der Filiale zusammengeführt masterwird, die als Hauptfiliale im Repo betrachtet wird.

Es ist nur eine Vorsichtsmaßnahme von git. Es gibt Ihnen einen Hinweis: Vielleicht haben Sie Ihre Arbeit in der Themenbranche erledigt und vergessen, sie mit der Hauptbranche zusammenzuführen?


aktualisieren

Git warnt Sie davor, Ihre Änderungen zu verlieren. Wenn Sie beispielsweise Ihren nicht old_branchauf dem Master-Git haben, können Sie nicht einmal einen Zweig löschen, der nicht mit dem Master verknüpft ist (nun, es ist zulässig, aber mit dem Schlüssel, -Dder istforce-delete Option ist).


7
Nicht unbedingt master, aber der Strom HEAD.
Gefrorene Flamme

Das -D ist also, wenn Sie den zu löschenden Zweig (wirklich Commits) nicht mit einem Remote-Zweig geteilt haben. Die Warnung soll Sie zwar darüber informieren, dass Sie den Zweig (Commits) für die Fernbedienung freigegeben haben, dieser jedoch nicht mit HEAD zusammengeführt wird. HEAD ist HEAD, remote / refs / HEAD ist nicht dasselbe. Aber bitte korrigieren Sie mich, wenn ich mich hinsichtlich der Unterschiede zwischen Remote-HEAD und lokalem HEAD irre.
Eric
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.