1495 Stimmen

Wie kann ich wissen, ob ein Zweig bereits in Master zusammengeführt wurde?

Ich habe ein Git-Repository mit mehreren Zweigen.

Wie kann ich wissen, welche Zweige bereits in den Hauptzweig eingebunden sind?

2299voto

hectorsq Punkte 69756

git branch --merged master listet Zweige auf, die in Meister

git branch --merged listet Zweige auf, die in KOPF (d.h. die Spitze des aktuellen Zweigs)

git branch --no-merged listet Zweige auf, die noch nicht zusammengeführt wurden

In der Standardeinstellung gilt dies nur für die lokalen Zweigstellen. Die Website -a Flagge werden sowohl lokale als auch entfernte Zweige angezeigt, und die -r zeigt nur die entfernten Zweige an.

2 Stimmen

Nur eine Randbemerkung: Als ich versucht habe, zu sehen, ob ein entfernter Zweig zusammengeführt wurde, habe ich zuerst einen lokalen Verfolgungszweig eingerichtet und den Status mit git branch --merged und löschte dann den lokalen und den entfernten Zweig.

104 Stimmen

Offensichtlich, git branch -a --merged/no-merged funktioniert auch, ohne dass dabei ein lokaler Tracking-Zweig entsteht.

91 Stimmen

Oder einfach git branch -r --merged/--no-merged um nur entfernte Zweige zu finden.

155voto

Greg Hewgill Punkte 882617

Sie können die git merge-base Befehl, um die letzte gemeinsame Übertragung zwischen den beiden Zweigen zu finden. Wenn dieser Commit mit dem Kopf Ihres Zweiges übereinstimmt, wurde der Zweig vollständig zusammengeführt.

Beachten Sie, dass git branch -d macht so etwas bereits, weil es sich weigert, einen Zweig zu löschen, der hat nicht bereits vollständig zusammengeführt worden.

7 Stimmen

@hari's responder geht näher darauf ein, wie man dies nutzen kann.

0 Stimmen

Wie können wir dies automatisch/programmatisch tun?

3 Stimmen

"wurde noch nicht vollständig zusammengeführt" ... vollständig zusammengeführt in welchen Zweig?

51voto

avivamg Punkte 8416

Um zu überprüfen, welche Zweige in Master zusammengeführt werden, sollten Sie diese Befehle verwenden:

  • git branch <flag[-r/-a/none]> --merged master Liste aller Zweige, die in Master zusammengeführt wurden.
  • git branch <flag[-r/-a/none]> --merged master | wc -l Anzahl aller Zweige, die in Master zusammengeführt wurden.

Flaggen sind:

  • -a Flagge - (alle) Anzeige der entfernten und lokalen Zweigstellen
  • -r Flagge - (entfernt) nur entfernte Zweigstellen anzeigen
  • <emptyFlag> - zeigend . nur Zweigstellen

zum Beispiel: git branch -r --merged master zeigt Ihnen alle entfernten Repositories, die in Master zusammengeführt wurden.

0 Stimmen

Vielen Dank für diese tolle Antwort. Sehr hilfreich und einfach zu bedienen. Dies sollte auf die Antwort gesetzt werden, weil es Git (und nicht eine 3rd-Party-Element) verwendet.

0 Stimmen

git branch -r merged main zeigt Ihnen Zweige an, die Sie auf GitHub "gelöscht" haben, weil GitHub führt Aufzeichnungen über kürzlich gelöschte PR-Zweige

0 Stimmen

Wie interpretieren Sie die Ausgabe? Wenn ich git branch --merged master wird "Master" gelöscht. Aber wenn ich dasselbe für meinen Entwicklungszweig tue, werden einige Funktionszweige sowie Entwicklungs- und Masterzweige aufgelistet.

41voto

iberbeu Punkte 13649

Es gibt auch eine Lösung mit grafischer Schnittstelle. Tippen Sie einfach

gitk --all

Es öffnet sich ein neues Anwendungsfenster mit einer grafischen Darstellung des gesamten Projektarchivs, in dem man sehr leicht erkennen kann, ob ein Zweig bereits zusammengeführt wurde oder nicht

26 Stimmen

Um das klarzustellen, ist die Installation einer Anwendung erforderlich, die nicht Teil des Systems ist. git Kunde. Unter Ubuntu, apt-get install gitk .

3 Stimmen

Unter macOS, wenn Sie Homebrew installiert haben, wäre das brew install git-gui zu erhalten gitk auf der Kommandozeile.

35voto

Hari Punkte 571

Utilice git merge-base <commit> <commit> .

Dieser Befehl findet den oder die besten gemeinsamen Vorfahren zwischen zwei Commits. Und wenn der gemeinsame Vorfahre mit dem letzten Commit eines "Zweiges" identisch ist, dann können wir sicher davon ausgehen, dass dieser "Zweig" bereits in den Master zusammengeführt wurde.

Hier sind die Schritte

  1. Letzten Commit-Hash im Master-Zweig finden
  2. Suche nach dem Hash der letzten Übergabe für einen "Zweig".
  3. Befehl ausführen git merge-base <commit-hash-step1> <commit-hash-step2> .
  4. Wenn die Ausgabe von Schritt 3 mit der Ausgabe von Schritt 2 übereinstimmt, dann wurde ein "Zweig" bereits in Master zusammengeführt.

Weitere Informationen über git merge-base https://git-scm.com/docs/git-merge-base .

2 Stimmen

Ich denke, dass Sie damit nur feststellen können, ob die Tipps zusammengeführt werden. Zum Beispiel wird es Ihnen nicht sagen, ob master wurde verschmolzen mit branch und dann wurden 4 weitere Übertragungen in branch .

0 Stimmen

Warum nicht git log -1 $(git merge-base base-branch feature-branch) und wenn Sie sehen feature-branch in der Ausgabe, dann wissen Sie, dass sie zusammengeführt werden?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X