Wie schließe ich einen Git-Zweig?

112

Also fange ich mit Git + GitHub an.

In unserem kleinen verteilten Team erstellt jedes Mitglied für jede ihm zugewiesene Ausgabe / Anforderung eine eigene Niederlassung.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

jetzt code code, commit, code, commit, etc ...

dann pull request, code-fixup, commit, code, commit.. usw.

und ENDLICH ... Pull-Anfrage wird akzeptiert.

Woot.

aber was jetzt? (......peinlich......)

Muss die Person, die den Zweig auf ihrem lokalen Entwicklungscomputer erstellt hat, den Zweig schließen? Ein Vorschlag war, dass die Entwicklerperson den Zweig `(... -D ...) löscht und dann einen Pull / Refresh des Masters durchführt .., der dann den gesamten Zweigcode erhält.

Hmmmmm ... nicht sicher - bitte helfen Sie :)

Pure.Krome
quelle
16
Ein Zweig in Git ist nur eine Bezeichnung für ein bestimmtes Commit. Wenn Sie ihn also nicht mehr benötigen, löschen Sie einfach diesen "Zweig" (dieses "Label" für dieses Commit). Vor Ort machen Sie einfach ein git branch Issue#1 -dund das ist alles, was es gibt - kein Code geht verloren, nur ein Etikett wird aus Ihrem Repository entfernt
marc_s
1
@marc_s Ich schlage vor, nur eine Antwort daraus zu machen :)
KingCrunch
Also @marc_s - Sie sagen, dass die Standardpraxis, sobald Sie Ihren Zweig fertiggestellt haben und der Zweig verschoben wurde, wir ihn löschen? Was ist mit dem Zusammenführen?
Pure.Krome
@ Pure.Krome Zumindest habe ich angenommen, dass mit "Pull-Anfrage akzeptiert" gemeint ist, dass es bereits zusammengeführt ist. Ja, natürlich, integrieren die Änderungen in master, developoder was auch immer Ihr Entwicklungszweig (Merge, Rebase (mit / ohne Squash), ...) genannt
KingCrunch
als ich sagte 'Pull Anfrage wird akzeptiert' .. das passiert woanders. (dh der verantwortliche Entwickler, der den gesamten PR-Code genehmigt ...). Ich habe mich gefragt, ob ich auf MEINEM lokalen Entwicklungscomputer zum Master wechseln und auch eine Zusammenführung durchführen soll.
Pure.Krome

Antworten:

181

Wir bitten den Entwickler, der nach der Pull-Anfrage fragt, anzugeben, dass der Zweig gelöscht werden soll. Meistens ist dies der Fall. Es gibt Zeiten, in denen ein Zweig benötigt wird (z. B. Kopieren der Änderungen in einen anderen Release-Zweig).

Meine Finger haben unseren Prozess auswendig gelernt:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

Eine Niederlassung ist für die Arbeit. Ein Tag markiert einen Ort in der Zeit. Durch Markieren jeder Zweigzusammenführung können wir einen Zweig wiederbeleben, wenn dies erforderlich ist. Die Verzweigungs-Tags wurden mehrmals verwendet, um Änderungen zu überprüfen.

Bill Door
quelle
8
Wir haben kürzlich eine Änderung an unserem Verfahren vorgenommen. Die Verwendung git push --tagsist schwerfällig und lädt alle Tags herunter. Dies macht es schwierig, eigene lokale Tags zu haben. Stattdessen verwenden wir git push origin branch-<feature-branch>nur das eine Tag.
Bill Door
In der letzten Zeile müssen Sie also daran denken, den Tag-Namen für den Feature-Zweig zu verwenden, den wir zuvor auf "branch- <feature-branch>" gesetzt haben, und nicht nur auf <feature-branch>. Richtig?
Premier Bromanov
@PremierBromanov Die letzte Zeile dient zum Löschen des Remote-Zweigs. Denken Sie daran, das Tag @BillDoor verwendet zu haben git push --tags.
Deivide
Hervorragendes Skript !!
Kike Gamboa
41

Ja, löschen Sie einfach den Zweig, indem Sie ihn ausführen git push origin :branchname. Um ein neues Problem später zu beheben, verzweigen Sie erneut vom Master.

Gaurav Gupta
quelle
3
Dadurch wird der Remote-Zweig gelöscht, nicht der lokale.
KingCrunch
5
Ich weiß nicht, warum dies bei -2 modifiziert ist, das ist die richtige Antwort. Sie haben definitiv eine entfernte Niederlassung. Wie könnten sie sonst eine PR dagegen ausstellen?
Ana Betts
Wenn Sie dies tun und dann einen Git-Pull ausführen, wird dann nicht auch Ihr lokaler Zweig gelöscht? (Edit: nm, ich sehe, dass dies ausdrücklich nicht der Fall ist, es sei denn, Sie führen git remote prune aus.)
Tim Keating
1
Was passiert mit der Branchenhistorie?
Geoidesic
40

Nachdem Sie den Code abgeschlossen haben, führen Sie zuerst den Zweig zum Master zusammen und löschen Sie dann diesen Zweig

git checkout master
git merge <branch-name>
git branch -d <branch-name>
Dau
quelle
und das ist auf MEINER eigenen Entwicklungsmaschine, oder? Die Hauptperson, die neuen Code akzeptiert. Seine Maschine befindet sich an einer anderen Stelle.
Pure.Krome
2
Wenn jemand anderes die Zusammenführung durchführt, hat er Ihren Verzweigungszeiger normalerweise in einer separaten Fernbedienung, z. B. Absender / Verzweigungsname. Er muss es verwenden git remote prune sender, um es auch nach Ihnen loszuwerden - obwohl es ihn in den meisten Fällen nicht kümmern muss.
Jørgensen
1
Sie sollten niemals Ihren eigenen Zweig zusammenführen, es sei denn, Sie sind derjenige, der für die Integration in den Hauptbaum verantwortlich ist. Wenn dies nicht der Fall ist und Sie eine andere Person gebeten haben, diese zu integrieren, aktualisieren Sie Ihren Hauptzweig mit den neuen Remote-Commits - diese sollten alles enthalten, was Sie zum Abrufen angefordert haben - und löschen Sie dann Ihren Zweig. Dies stellt sicher, dass Sie keine Probleme haben, wenn der andere die Dinge ändert.
ThiefMaster