Soll ich einen Zweig nach dem Zusammenführen löschen?


89

Löschen Sie einen Zweig nach dem Zusammenführen aus dem Repository?
Es ist jedoch eine gute Praxis oder nicht?

Normalerweise erstelle ich viele Zweige, da ich meine aktuelle Version nicht brechen möchte und sie löschen möchte, um die Dinge in Ordnung zu halten.
Wenn Sie jedoch mit Assembla oder GitHub arbeiten, werden Ihre Zusammenführungsanforderungen aus alten Zweigen auf der Site gespeichert. Wenn Sie sie löschen, wird eine Fehlermeldung angezeigt, da sie nicht abgerufen werden können ...

Wie schafft man das normalerweise?

Antworten:


66

Das Löschen von zusammengeführten Zweigen ist kein Problem. Alle Commits sind noch im Verlauf verfügbar, und selbst in der GitHub-Oberfläche werden sie weiterhin angezeigt (siehe z. B. diese PR, die sich auf eine Gabel bezieht, die ich habe gelöscht, nachdem die PR akzeptiert wurde).


Sie sagten, dass alle Commits noch in der Historie verfügbar sind. Wenn ich mir ein Projekt auf github.com ansehe, stelle ich fest, dass dies wahr ist. In der Github-Desktop-App für den Mac scheint der Commit-Verlauf für den zusammengeführten Zweig jedoch nicht mehr angezeigt zu werden. Irre ich mich
Friedenstyp

Ich würde hinzufügen, dass, wenn Sie keinen Git-Client verwenden, insbesondere keinen mit einer GUI, die Zweige hilfreich sein können, um Ihr Protokoll gut zu verstehen. Das heißt, da Sie keinen Github / Gitlab / andere GUI zum Anschauen haben, können Sie durch Beibehalten der Verzweigungsnamen einen einfachen Ort zum Verweisen auf den Verlauf zusätzlich zum Festschreiben des Verlaufs haben - was sonst durch Löschen des Zweigs verloren geht. Jemand, bitte lassen Sie mich wissen, wenn diese letzte Aussage falsch ist.
Raj

@Raj hast du das schon in Form von Merge branch fix-foo-barCommit-Nachrichten. Versuchen Sie es git log --grep="Merge branch"und lassen Sie dann Ihre eigenen Anker von Interesse über fallen git checkout -b curious-change. Außerdem geht beim Löschen eines Zweigs nichts verloren - außer dem bloßen Zeiger "Verzweigungsname → Commithash" (was ein Zweig wirklich ist, spielt keine Rolle, ob lokal oder entfernt).
Ulidtko

@ fred-foo Die Frage, ob es sich um eine gute Praxis handelt, wird jedoch nicht beantwortet. (Ich habe die gleiche Frage)
Esger

25

Ich räume definitiv meine Filialen auf, nachdem sie zusammengeführt wurden.

Wir verwenden GitLab und führen Anforderungen bei der Arbeit zusammen, sodass die historischen Informationen zu Zweigen dort gespeichert werden. Ich brauche sie nicht, um meine Filialliste zu überladen, und wenn ich mir die Gabel eines Kollegen anschaue, möchte ich im Idealfall nur die Filialen ihrer aktuellen aktiven Entwicklung sehen. Wenn ich versuche, Code in ihrem Zweig zu betrachten, möchte ich nur einige derzeit aktive Zweige durchsehen können und nicht alle Funktionen oder Korrekturen, an denen sie jemals gearbeitet haben.

Dies gilt auch für BitBucket und GitHub.

Der einzige Grund, warum Sie möglicherweise einen Zweig nach dem Zusammenführen nicht löschen, besteht darin, dass Sie wissen, wo eine bestimmte Funktion beendet wurde, aber Zusammenführungs-Commits (und git merge --no-ffwenn Sie dies wirklich möchten) machen dies irrelevant.


3
Anscheinend macht GitHub immer --no-ff, damit wir nicht die Tatsache verlieren, dass dies auch in solchen Situationen ein Zweig war.
Joeytwiddle

7
@joeytwiddle: Angenommen, Sie verwenden die GitHub-eigene Oberfläche, um den Zweig zusammenzuführen, ja!
Asherah


0

Nur um zu verdeutlichen, ist die Verzweigung aus Git-Sicht nur eine Verknüpfung zu einem Commit. Durch Löschen des Zweigs werden keine Commits aus dem Git-Repo gelöscht. Natürlich werden abgelöste Commits nach einiger Zeit über den Git-Garbage-Collector bereinigt.

Zu Ihrer Information: Normalerweise führen wir Zweige über die Bitbucket-Schnittstelle zum Master zusammen. Dort können Sie die delete feature branch after mergeFlagge setzen.

Wenn Sie sich mit zu alten Zweigen befassen müssen, können Sie nach einigen Dienstprogrammen suchen, zum Beispiel nach diesem .

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.