So prüfen Sie, ob ein Git-Branch vollständig in den Main-Branch gemerged wurde

GitGitBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie effektiv prüfen können, ob ein Git-Branch vollständig in einen anderen Branch, insbesondere in den main-Branch, gemerged wurde. Dies ist eine entscheidende Fähigkeit für die Aufrechterhaltung eines sauberen und organisierten Git-Repositorys.

Sie beginnen damit, den Befehl git branch --merged main zu verwenden, um Branches zu identifizieren, die vollständig in main integriert sind. Anschließend überprüfen Sie die Ergebnisse mit dem Befehl git log main ^branch, um sicherzustellen, dass alle Commits aus dem Zielbranch in main vorhanden sind. Abschließend testen Sie diese Methoden mit einem teilweise gemergten Branch, um die unterschiedlichen Ergebnisse zu verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/cherry_pick("Cherry Pick") subgraph Lab Skills git/branch -.-> lab-560045{{"So prüfen Sie, ob ein Git-Branch vollständig in den Main-Branch gemerged wurde"}} git/checkout -.-> lab-560045{{"So prüfen Sie, ob ein Git-Branch vollständig in den Main-Branch gemerged wurde"}} git/merge -.-> lab-560045{{"So prüfen Sie, ob ein Git-Branch vollständig in den Main-Branch gemerged wurde"}} git/log -.-> lab-560045{{"So prüfen Sie, ob ein Git-Branch vollständig in den Main-Branch gemerged wurde"}} git/cherry_pick -.-> lab-560045{{"So prüfen Sie, ob ein Git-Branch vollständig in den Main-Branch gemerged wurde"}} end

Verwenden von git branch --merged main

In diesem Schritt lernen wir, wie wir den Befehl git branch --merged verwenden können, um zu sehen, welche Branches vollständig in einen anderen Branch integriert wurden. Dies ist ein sehr nützlicher Befehl, um Ihr Repository sauber und organisiert zu halten.

Zunächst stellen wir sicher, dass wir uns in unserem Projektverzeichnis befinden. Öffnen Sie Ihr Terminal und navigieren Sie zum Verzeichnis my-time-machine:

cd ~/project/my-time-machine

Jetzt erstellen wir einen neuen Branch namens feature-branch und wechseln zu ihm. Wir simulieren einige Änderungen auf diesem Branch.

git branch feature-branch
git checkout feature-branch
echo "Adding a new feature" >> feature.txt
git add feature.txt
git commit -m "Add new feature"

Nach dem Commit sollten Sie eine Ausgabe ähnlich dieser sehen:

[feature-branch a1b2c3d] Add new feature
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Jetzt wechseln wir zurück zum master-Branch und mergen den feature-branch hinein.

git checkout master
git merge feature-branch

Sie sollten eine Ausgabe sehen, die einen erfolgreichen Merge anzeigt:

Updating e1f2g3h..a1b2c3d
Fast-forward
 feature.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Nachdem wir den feature-branch in den master-Branch gemerged haben, verwenden wir git branch --merged, um zu sehen, welche Branches jetzt vollständig in den master-Branch gemerged sind.

git branch --merged master

Dieser Befehl listet alle Branches auf, deren Commits vollständig in den master-Branch integriert wurden. Sie sollten sowohl master als auch feature-branch aufgeführt sehen, was bedeutet, dass feature-branch jetzt vollständig in master gemerged ist.

Das Verständnis, welche Branches gemerged sind, ist wichtig, da es Ihnen hilft, Branches zu identifizieren, die sicher gelöscht werden können und so Ihr Repository ordentlich hält. Es ist wie das Wissen, welche Nebenquests in einem Spiel Sie abgeschlossen haben und jetzt ignorieren können.

Überprüfung mit git log main ^branch

Im vorherigen Schritt haben wir git branch --merged verwendet, um zu sehen, welche Branches in den master-Branch gemerged wurden. Jetzt verwenden wir einen anderen Befehl, git log, um dies aus einer anderen Perspektive zu überprüfen. Der git log-Befehl mit der Syntax main ^branch ist eine leistungsstarke Methode, um Commits zu sehen, die in main enthalten sind, aber nicht in branch.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis my-time-machine befinden:

cd ~/project/my-time-machine

Jetzt verwenden wir git log, um die Commits zu sehen, die in master enthalten sind, aber nicht in feature-branch.

git log master ^feature-branch

Da wir im vorherigen Schritt feature-branch vollständig in master gemerged haben, sind alle Commits aus feature-branch jetzt auch in master enthalten. Daher sollte dieser Befehl Ihnen die Commits anzeigen, die ursprünglich nur auf dem master-Branch vor dem Merge vorhanden waren. Er sollte nicht den Commit "Add new feature" anzeigen, den wir auf feature-branch gemacht haben.

Sie sollten eine Ausgabe ähnlich dieser sehen, die nur die initialen Commit(s) aus dem master-Branch anzeigt:

commit e1f2g3h4i5j6k7l8m9n0o1p2q3r4s5t6u7v8w9x (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Wenn feature-branch nicht vollständig gemerged wäre, würde dieser Befehl die Commits anzeigen, die auf master aber nicht auf feature-branch sind, sowie alle Commits, die auf feature-branch aber nicht auf master sind. Die Tatsache, dass der Commit "Add new feature" hier nicht angezeigt wird, bestätigt, dass er jetzt in master vorhanden ist.

Diese Syntax git log main ^branch ist eine hervorragende Möglichkeit, visuell zu bestätigen, ob alle Commits aus einem Branch in einem anderen vorhanden sind. Sie hilft Ihnen, die Beziehung zwischen verschiedenen Branches in Ihrem Repository zu verstehen.

Test mit teilweise gemergtem Branch

In den vorherigen Schritten haben wir gesehen, wie git branch --merged und git log main ^branch mit einem vollständig gemergten Branch funktionieren. Jetzt schauen wir uns an, was passiert, wenn ein Branch nur teilweise gemergt ist, d. h., einige, aber nicht alle seiner Commits wurden in einen anderen Branch integriert.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis my-time-machine befinden:

cd ~/project/my-time-machine

Erstellen wir einen neuen Branch namens partial-feature und wechseln wir zu ihm:

git branch partial-feature
git checkout partial-feature

Jetzt machen wir zwei Commits auf diesem neuen Branch:

echo "Adding part 1 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 1"
echo "Adding part 2 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 2"

Nach den Commits sollten Sie eine Ausgabe ähnlich dieser sehen:

[partial-feature a1b2c3d] Add part 1
 1 file changed, 1 insertion(+)
 create mode 100644 partial.txt
[partial-feature e1f2g3h] Add part 2
 1 file changed, 1 insertion(+)

Jetzt wechseln wir zurück zum master-Branch und mergen nur den ersten Commit aus partial-feature. Dies können wir mit git cherry-pick tun. Zunächst benötigen wir den Commit-Hash des "Add part 1"-Commits. Sie können diesen finden, indem Sie git log partial-feature ausführen und den Hash des ersten Commits kopieren.

git checkout master
## Ersetzen Sie <commit_hash> durch den tatsächlichen Hash des "Add part 1"-Commits
git cherry-pick <commit_hash>

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Cherry-Picking erfolgreich war:

[master i1j2k3l] Add part 1
 Date: Mon Aug 7 10:05:00 2023 +0000
 1 file changed, 1 insertion(+)
 create mode 100644 partial.txt

Jetzt verwenden wir erneut git branch --merged master:

git branch --merged master

Sie sollten master und feature-branch aufgeführt sehen, aber nicht partial-feature. Dies liegt daran, dass partial-feature noch den "Add part 2"-Commit hat, der nicht in master gemergt wurde. git branch --merged listet nur Branches auf, bei denen alle Commits im Zielbranch vorhanden sind.

Schließlich verwenden wir git log master ^partial-feature:

git log master ^partial-feature

Dieser Befehl zeigt Ihnen die Commits, die in master enthalten sind, aber nicht in partial-feature. Es sollten die initialen Commit(s) aus master, der "Add new feature"-Commit (der jetzt in master ist) und der "Add part 1"-Commit (den wir cherry-picked haben) angezeigt werden. Der "Add part 2"-Commit sollte nicht angezeigt werden, da dieser Commit nur auf partial-feature ist.

Dies zeigt, wie git branch --merged und git log main ^branch Ihnen helfen können, den Merge-Status Ihrer Branches zu verstehen, auch wenn nur einige Commits integriert wurden.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob ein Git-Branch vollständig in einen anderen Branch, insbesondere main (oder master), gemerged wurde. Wir haben begonnen, indem wir den Befehl git branch --merged main verwendet haben, der alle Branches auflistet, deren Commits vollständig in den main-Branch integriert sind. Dies ist eine schnelle Möglichkeit, Branches zu identifizieren, die für die Bereinigung bereit sind.

Anschließend haben wir eine detailliertere Überprüfungsmethode mit git log main ^branch untersucht. Dieser Befehl zeigt Commits an, die in main enthalten sind, aber nicht im angegebenen Branch. Wenn dieser Befehl keine Ausgabe zurückgibt, bestätigt dies, dass alle Commits aus dem Branch in main vorhanden sind, wodurch die vollständige Fusion verifiziert wird. Schließlich haben wir diese Methoden mit einem teilweise gemergten Branch getestet, um den Unterschied in der Ausgabe zu verstehen und unser Verständnis darüber, wie man den Merge-Status eines Branches genau bestimmen kann, weiter zu festigen.