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.

user1322228
quelle
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

cjhveal
quelle
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.

Karl Bielefeldt
quelle
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

Mithun Nair
quelle
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).

Max Komarychev
quelle
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