So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist

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 prüfen können, ob ein Git-Branch mit einem anderen Branch synchronisiert ist. Dies ist eine grundlegende Fähigkeit für die Verwaltung des Projektverlaufs und die Sicherstellung, dass die Branches aktuell sind.

Sie werden drei verschiedene Methoden erkunden, um dies zu erreichen: die Verwendung von git log zum Vergleich der Commit-Historie, die Anwendung von git diff zur Identifizierung von Unterschieden zwischen Branches und schließlich die Überprüfung der Beziehung zwischen Branches mit git merge-base. Am Ende dieses Labs verfügen Sie über praktische Techniken, um den Synchronisierungsstatus Ihrer Git-Branches sicher zu bestimmen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} git/commit -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} git/diff -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} git/branch -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} git/checkout -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} git/merge -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} git/log -.-> lab-560051{{"So prüfen Sie, ob ein Git-Branch mit einem anderen Branch synchronisiert ist"}} end

Verwenden von git log zum Vergleich von Commits

In diesem Schritt lernen wir, wie wir den Befehl git log verwenden können, um verschiedene Commits in der Historie Ihres Projekts zu vergleichen. Dies ist wie das Betrachten verschiedener Momentaufnahmen Ihrer Zeitmaschine und das Erkennen, wie sich die Dinge zwischen diesen Momentaufnahmen verändert haben.

Zunächst stellen wir sicher, dass wir uns im Verzeichnis unseres Projekts befinden. Öffnen Sie Ihr Terminal und navigieren Sie in den Ordner my-time-machine:

cd ~/project/my-time-machine

Jetzt erstellen wir eine neue Datei und machen einen Commit. Dies gibt uns einen weiteren Punkt in der Historie, mit dem wir unseren ersten Commit vergleichen können.

echo "This is the second message." > second_message.txt
git add second_message.txt
git commit -m "Add a second message file"

Nach dem Commit sollten Sie eine Ausgabe ähnlich der folgenden sehen:

[master a1b2c3d] Add a second message file
 1 file changed, 1 insertion(+)
 create mode 100644 second_message.txt

Jetzt haben wir zwei Commits in unserer Historie. Schauen wir uns erneut das Log an:

git log

Sie werden zwei Commit-Einträge sehen, wobei der neueste oben steht. Jeder Commit hat eine eindeutige Kennung (die lange Zeichenfolge).

Um zwei bestimmte Commits zu vergleichen, können wir git log mit der Bereichssyntax commit1..commit2 verwenden. Dies zeigt die Commits an, die von commit2 aus erreichbar, aber nicht von commit1 aus.

Lassen Sie uns die Commit-IDs für unsere beiden Commits finden. Sie können die kurzen IDs aus der Ausgabe von git log --oneline erhalten. Beispielsweise, wenn Ihre erste Commit-ID a1b2c3d und Ihre zweite e4f5g6h war, würden Sie diese IDs verwenden.

git log --oneline

Beispielausgabe:

e4f5g6h (HEAD -> master) Add a second message file
a1b2c3d Send a message to the future

Jetzt vergleichen wir den Zustand des Projekts zwischen dem ersten Commit (a1b2c3d) und dem zweiten Commit (e4f5g6h). Ersetzen Sie die Beispiel-IDs durch Ihre tatsächlichen Commit-IDs:

git log a1b2c3d..e4f5g6h

Dieser Befehl zeigt Ihnen die Commits an, die nach dem Commit mit der ID a1b2c3d bis einschließlich des Commits mit der ID e4f5g6h gemacht wurden. In diesem Fall sollte er Ihnen den zweiten Commit anzeigen.

Das Verständnis, wie man Commits mit git log vergleicht, ist entscheidend für die Navigation in der Historie Ihres Projekts. Es ermöglicht Ihnen, die Abfolge der Änderungen zu sehen und die Entwicklung Ihrer Codebasis zu verstehen.

Ausführen von git diff branch1 branch2

Im vorherigen Schritt haben wir git log verwendet, um zu sehen, welche Commits in verschiedenen Teilen unserer Historie vorhanden waren. Jetzt verwenden wir den Befehl git diff, um die tatsächlichen Änderungen zwischen zwei verschiedenen Zeitpunkten oder zwischen verschiedenen Branches zu sehen. Dies ist wie das Vergleichen von zwei Versionen Ihrer Zeitmaschine und das genaues Erkennen, welche Teile hinzugefügt, entfernt oder geändert wurden.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis Ihres Projekts befinden:

cd ~/project/my-time-machine

Derzeit haben wir nur einen Branch, master. Um das Vergleichen von Branches zu demonstrieren, erstellen wir einen neuen Branch namens feature-branch. Stellen Sie sich einen Branch als eine alternative Zeitlinie vor, in der Sie an neuen Funktionen oder Experimenten arbeiten können, ohne die Hauptzeitlinie (master) zu beeinflussen.

git branch feature-branch

Jetzt wechseln wir zu unserem neuen Branch:

git checkout feature-branch

Sie sollten eine Ausgabe sehen, die anzeigt, dass Sie den Branch gewechselt haben:

Switched to branch 'feature-branch'

Auf diesem neuen Branch machen wir eine Änderung an unserer message.txt-Datei:

echo "Adding a line on the feature branch." >> message.txt

Dieser Befehl fügt eine neue Zeile zur message.txt-Datei hinzu.

Jetzt committen wir diese Änderung auf dem feature-branch:

git add message.txt
git commit -m "Add a line to message.txt on feature branch"

Nach dem Commit sollten Sie eine Ausgabe ähnlich der folgenden sehen:

[feature-branch a1b2c3d] Add a line to message.txt on feature branch
 1 file changed, 1 insertion(+)

Jetzt haben wir zwei Branches (master und feature-branch) mit unterschiedlicher Commit-Historie. Der master-Branch hat die ersten beiden Commits, und der feature-branch hat diese beiden Commits plus den neuen Commit, den wir gerade gemacht haben.

Verwenden wir git diff, um die Unterschiede zwischen dem master-Branch und dem feature-branch zu sehen.

git diff master feature-branch

Die Ausgabe zeigt Ihnen die genauen Zeilen, die zwischen den beiden Branches unterschiedlich sind:

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a line on the feature branch.

Diese Ausgabe zeigt, dass die message.txt-Datei unterschiedlich ist. Die Zeile, die mit + beginnt, gibt an, dass eine Zeile auf dem feature-branch im Vergleich zum master-Branch hinzugefügt wurde.

Die Verwendung von git diff ist unglaublich leistungsstark, um genau zu verstehen, welche Änderungen zwischen verschiedenen Versionen Ihres Projekts oder zwischen verschiedenen Branches vorgenommen wurden. Es hilft Ihnen, Änderungen zu überprüfen, bevor Sie sie zusammenführen, und festzustellen, wo bestimmte Modifikationen vorgenommen wurden.

Drücken Sie q, um die Diff-Ansicht zu verlassen und zum Befehlszeilenprompt zurückzukehren.

Überprüfung mit git merge-base

In diesem Schritt werden wir uns mit dem Befehl git merge-base befassen. Dieser Befehl ist nützlich, um den besten gemeinsamen Vorfahren zwischen zwei Commits zu finden. Stellen Sie sich das wie das Finden des Zeitpunkts vor, an dem sich zwei verschiedene Zeitlinien (Branches) getrennt haben.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis Ihres Projekts befinden:

cd ~/project/my-time-machine

Wir haben zwei Branches, master und feature-branch. Der feature-branch wurde aus dem master-Branch erstellt, und dann wurde ein neuer Commit zum feature-branch hinzugefügt. Der gemeinsame Vorfahr dieser beiden Branches ist der Commit auf dem master-Branch direkt vor der Erstellung des feature-branch.

Lassen Sie uns git merge-base verwenden, um den gemeinsamen Vorfahr von master und feature-branch zu finden:

git merge-base master feature-branch

Die Ausgabe dieses Befehls wird die Commit-ID des gemeinsamen Vorfahrens sein. Dies sollte die Commit-ID des zweiten Commits sein, den wir auf dem master-Branch gemacht haben, bevor wir den feature-branch erstellt haben.

Beispielausgabe:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9

(Die tatsächliche Commit-ID wird in Ihrem Fall anders sein).

Um zu überprüfen, dass dies tatsächlich der gemeinsame Vorfahr ist, können Sie git log --oneline verwenden, um die Historie beider Branches zu sehen und die Commit-ID visuell zu bestätigen.

git log --oneline --graph --all

Dieser Befehl zeigt Ihnen eine grafische Darstellung Ihrer Commit-Historie über alle Branches hinweg. Sie können von den Endpunkten von master und feature-branch zurückverfolgen, um zu finden, wo sich ihre Historien treffen. Die von git merge-base identifizierte Commit-ID sollte dieser Treffpunkt sein.

Das Verständnis des gemeinsamen Vorfahrens ist in Git wichtig, insbesondere wenn Sie vorbereiten, Branches zusammenzuführen. Git verwendet den gemeinsamen Vorfahren, um die Änderungen zu ermitteln, die kombiniert werden müssen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mithilfe verschiedener Git-Befehle prüft, ob ein Git-Branch mit einem anderen Branch synchronisiert ist. Wir haben zunächst git log verwendet, um Commits zwischen Branches zu vergleichen und verstanden, wie man die Commit-Historie anzeigt und Unterschiede mithilfe der Bereichssyntax erkennt. Dies ermöglichte es uns, zu sehen, welche Commits in einem Branch, aber nicht im anderen vorhanden sind.

Als Nächstes haben wir uns mit dem Befehl git diff beschäftigt, um die tatsächlichen Inhaltsunterschiede zwischen Branches zu untersuchen und zeilenweise Änderungen zu sehen. Schließlich haben wir git merge-base verwendet, um den gemeinsamen Vorfahr-Commit zweier Branches zu finden, was hilft, zu bestimmen, ob ein Branch vollständig in einem anderen enthalten ist. Diese Schritte bieten einen umfassenden Ansatz zur Überprüfung der Branch-Synchronisierung in Git.