Was tun mit Branch nach dem Zusammenführen?

341

Ich hatte zwei Zweige: masterund branch1. Ich habe mich gerade branch1wieder zusammengeschlossen masterund bin mit diesem Zweig fertig. Soll ich es löschen oder einfach herumstehen lassen? Wird das Löschen zu Datenverlust führen?

Alison
quelle
Siehe auch: Wie verwende ich git merge --squash?
Martin Thoma

Antworten:

410

Nach dem Zusammenführen ist es sicher, den Zweig zu löschen:

git branch -d branch1

Außerdem warnt git Sie (und lehnt es ab, den Zweig zu löschen), wenn es denkt, dass Sie ihn noch nicht vollständig zusammengeführt haben. Wenn Sie einen Zweig (mit git branch -D), der noch nicht vollständig zusammengeführt wurde, zwangsweise löschen , müssen Sie einige Tricks ausführen, um die nicht zusammengeführten Commits zurückzugewinnen (siehe unten).

Es gibt jedoch einige Gründe, einen Zweig zu behalten. Wenn es sich beispielsweise um einen Feature-Zweig handelt, möchten Sie möglicherweise Bugfixes für dieses Feature durchführen können, das sich noch in diesem Zweig befindet.

Wenn Sie den Zweig auch auf einem Remote-Host löschen möchten, haben Sie folgende Möglichkeiten:

git push origin :branch1

Dadurch wird der Zweig auf der Fernbedienung zwangsweise gelöscht (dies wirkt sich jedoch nicht auf bereits ausgecheckte Repositorys aus und hindert niemanden mit Push-Zugriff daran, ihn erneut zu pushen / zu erstellen).


git reflogzeigt die kürzlich ausgecheckten Revisionen. Dort wird auch jeder Zweig angezeigt, den Sie im letzten Repository-Verlauf ausgecheckt haben. Abgesehen davon git fsckwird es das Werkzeug der Wahl in jedem Fall von Commit-Loss in Git sein.

Jonas Schäfer
quelle
Wenn Sie den Zweig speichern möchten, können Sie vor dem Löschen ein Tag erstellen. Wenn Sie zu diesem Punkt zurückkehren möchten, können Sie dieses Tag auschecken.
Joqus
3
@ Joqus Ich würde eher vorschlagen, es in diesem Fall als Zweig zu behalten. Veröffentlichen Sie es einfach nicht.
Jonas Schäfer
Nur für den Fall - wenn Sie den Zweig vor dem Löschen "vollständig zusammenführen" möchten, drücken Sie diesen Zweig nach dem Zusammenführen, aber vor dem Löschen. So etwas wiegit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
Avtomaton
25

Ich bevorzuge RENAME anstatt DELETE

Alle meine Zweige sind in Form von benannt

  • Fix/fix-<somedescription> oder
  • Ftr/ftr-<somedescription> oder
  • usw.

Mit Turm als meine git Frontend organisiert sie fein säuberlich alle die Ftr/, Fix/, Test/usw. in Ordnern.
Sobald ich mit einem Zweig fertig bin, benenne ich sie in um Done/...-<description>.

Auf diese Weise sind sie immer noch da (was nützlich sein kann, um den Verlauf bereitzustellen) und ich kann jederzeit zurückgehen und wissen, was es war (Feature, Fix, Test usw.).

Yohst
quelle
4
Benennen Sie auch die Remote-Zweige um?
VitalyB
21
Es scheint überflüssig , diese Zweige zu behalten und verrückt, sie umzubenennen . Vermisse ich hier etwas? Sie können den Zweig jederzeit neu erstellen. stackoverflow.com/questions/3640764/…
ksav
Es macht keinen Sinn, Zweige zu behalten, nachdem sie zusammengelegt wurden
Rastaman
2
+1 für die Idee, in Fix, Test and Done umzubenennen ... Wenn Sie Filialen behalten, werden Auftragnehmer für mein Unternehmen bezahlt.
jpfreire
1

Wenn Sie fortfahren und den Zweig nach dem Zusammenführen LÖSCHEN. Kümmere dich einfach
um
Alle Hyperlinks URLs Referenzen deiner DELETED Filialen, werden GEBROCHEN .

ahmednabil88
quelle