So überprüfen Sie, ob ein Git-Commit ein Merge-Commit 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 feststellen können, ob ein Git-Commit ein Merge-Commit ist. Wir werden den Befehl git show untersuchen, um Commit-Details zu prüfen. Insbesondere werden wir uns darauf konzentrieren, die Eltern-Commits (parent commits) zu identifizieren, was ein wichtiger Indikator für einen Merge ist.

Sie werden auch lernen, wie Sie den Befehl git log --merges verwenden, um effizient nur die Merge-Commits in der Historie Ihres Repositorys aufzulisten. Abschließend werden wir diese Methoden auf Nicht-Merge-Commits anwenden, um Ihr Verständnis dafür zu festigen, wie Sie zwischen verschiedenen Arten von Commits in Git unterscheiden können.


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/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560056{{"So überprüfen Sie, ob ein Git-Commit ein Merge-Commit ist"}} git/status -.-> lab-560056{{"So überprüfen Sie, ob ein Git-Commit ein Merge-Commit ist"}} git/commit -.-> lab-560056{{"So überprüfen Sie, ob ein Git-Commit ein Merge-Commit ist"}} git/log -.-> lab-560056{{"So überprüfen Sie, ob ein Git-Commit ein Merge-Commit ist"}} end

Verwenden von git show zur Prüfung der Eltern-Commits

In diesem Schritt werden wir untersuchen, wie Sie den Befehl git show verwenden können, um die Details eines Commits zu prüfen, insbesondere seine Eltern-Commits (parent commits). Das Verständnis von Eltern-Commits ist entscheidend, um sich in der Historie Ihres Projekts zurechtzufinden und zu verstehen, wie verschiedene Commits miteinander in Beziehung stehen.

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

Nun verwenden wir git log, um unsere Commit-Historie anzuzeigen. Wir verwenden die Option --oneline für eine kompakte Ansicht:

git log --oneline

Sie sollten eine Ausgabe ähnlich der folgenden sehen (Ihr Commit-Hash wird anders sein):

a1b2c3d (HEAD -> master) Send a message to the future

Dies zeigt unseren ersten Commit an. Jetzt verwenden wir git show, um die Details dieses Commits anzuzeigen. Kopieren Sie den Commit-Hash (die kurze Zeichenkette aus Buchstaben und Zahlen, wie a1b2c3d) aus der Ausgabe von git log und ersetzen Sie YOUR_COMMIT_HASH im folgenden Befehl:

git show YOUR_COMMIT_HASH

Beispielsweise würden Sie, wenn Ihr Commit-Hash a1b2c3d war, folgenden Befehl ausführen:

git show a1b2c3d

Die Ausgabe wird recht detailliert sein und Informationen über den Commit anzeigen, einschließlich des Autors, des Datums, der Commit-Nachricht und der durch den Commit vorgenommenen Änderungen.

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

diff --git a/message.txt b/message.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/message.txt
@@ -0,0 +1 @@
+Hello, Future Me

Bei unserem ersten Commit, der der Anfang der Projekt-Historie ist, werden Sie bemerken, dass in der Ausgabe keine Zeile "Parent" vorhanden ist. Dies liegt daran, dass der Initial-Commit keinen Eltern-Commit hat – er ist die Wurzel der Projekt-Historie.

In späteren Schritten, wenn wir mehr Commits haben, werden wir git show erneut verwenden, um zu sehen, wie Eltern-Commits angezeigt werden und wie sie die Historie miteinander verbinden. Das Verständnis dieser Verknüpfung ist grundlegend für das Verständnis, wie Git Änderungen im Laufe der Zeit verfolgt.

Ausführen von git log --merges zur Überprüfung

In diesem Schritt werden wir uns mit Merge-Commits befassen und lernen, wie wir git log --merges verwenden können, um speziell nur diese Art von Commits in der Historie unseres Projekts anzuzeigen. Merge-Commits sind spezielle Commits, die Änderungen aus verschiedenen Zweigen (branches) zusammenführen.

Zurzeit ist die Historie unseres Projekts sehr einfach, mit nur einem Initial-Commit. Wir haben noch keine Zweige oder Merges. Lassen Sie uns dies zuerst bestätigen, indem wir git log --merges ausführen.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden:

cd ~/project/my-time-machine

Jetzt führen Sie den Befehl aus:

git log --merges

Da wir noch keine Merges durchgeführt haben, wird dieser Befehl wahrscheinlich keine Ausgabe liefern:

Dies ist zu erwarten! Der Befehl git log --merges ist so konzipiert, dass er die Commit-Historie filtert und nur Commits anzeigt, die durch das Mergen eines Zweigs in einen anderen entstanden sind.

Um diesen Befehl in Aktion zu sehen, müssten wir einen neuen Zweig erstellen, einige Commits auf diesem Zweig vornehmen und ihn dann wieder in unseren Hauptzweig mergen. Wir werden uns mit Zweigen und Merges in zukünftigen Labs befassen.

Für jetzt ist es wichtig zu verstehen, dass git log --merges ein leistungsfähiges Werkzeug ist, um zu verstehen, wann und wie verschiedene Entwicklungslinien in Ihrem Projekt zusammengeführt wurden. Dies ist besonders nützlich in kollaborativen Umgebungen, in denen mehrere Personen gleichzeitig an verschiedenen Funktionen arbeiten.

Testen von Nicht-Merge-Commits

In diesem Schritt werden wir einen regulären Commit (ein Nicht-Merge-Commit) erstellen und dann git log verwenden, um zu sehen, wie er in unserer Historie im Vergleich zu einem Merge-Commit (den wir noch nicht haben, aber in zukünftigen Labs werden) erscheint. Dies wird Ihnen helfen, Ihr Verständnis der verschiedenen Commit-Typen zu festigen.

Zunächst machen wir eine kleine Änderung an unserer message.txt-Datei. Wir fügen eine weitere Zeile hinzu.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden:

cd ~/project/my-time-machine

Jetzt verwenden wir den echo-Befehl, um eine neue Zeile an die Datei anzuhängen:

echo "Adding another line." >> message.txt

Der >>-Operator hängt den Text an die Datei an, anstatt sie zu überschreiben.

Lassen Sie uns den Inhalt der Datei überprüfen:

cat message.txt

Sie sollten Folgendes sehen:

Hello, Future Me
Adding another line.

Jetzt überprüfen wir den Status unseres Repositorys:

git status

Sie sollten sehen, dass message.txt geändert wurde:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git erkennt die von uns vorgenommene Änderung. Jetzt stellen wir diese Änderung in den Staging-Bereich und committen sie.

git add message.txt
git commit -m "Add a second line to message"

Sie sollten eine Ausgabe sehen, die den Commit bestätigt:

[master a1b2c3d] Add a second line to message
 1 file changed, 1 insertion(+)

Jetzt schauen wir uns erneut unsere Commit-Historie mit git log --oneline an:

git log --oneline

Sie sollten zwei Commits sehen:

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

Der neueste Commit (e4f5g6h in diesem Beispiel, Ihr Hash wird unterschiedlich sein) ist unser neuer Nicht-Merge-Commit. Er repräsentiert eine einzelne Änderung, die direkt auf dem master-Zweig vorgenommen wurde.

Wenn wir git log --merges erneut ausführen würden, würde es immer noch keine Ausgabe liefern, da keiner dieser Commits ein Merge-Commit ist.

Das Verständnis des Unterschieds zwischen regulären Commits und Merge-Commits ist wichtig, um die Historie Ihres Projekts zu interpretieren und effektiv mit anderen zusammenzuarbeiten. Reguläre Commits repräsentieren lineare Fortschritte auf einer einzigen Entwicklungslinie, während Merge-Commits die Integration von Änderungen aus verschiedenen Entwicklungslinien darstellen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Merge-Commits in Git identifiziert. Wir haben begonnen, indem wir den git show-Befehl verwendet haben, um die Details eines Commits zu untersuchen, wobei wir uns speziell auf das Vorhandensein oder Fehlen von Eltern-Commits (parent commits) konzentriert haben. Wir haben gesehen, dass der Initial-Commit keine Eltern-Commit hat, während nachfolgende Commits ihre Eltern-Commit(s) anzeigen.

Anschließend haben wir uns mit dem git log --merges-Befehl beschäftigt, der eine direkte Möglichkeit ist, nur die Merge-Commits in der Historie des Repositorys aufzulisten. Schließlich haben wir diese Methoden auf Nicht-Merge-Commits getestet, um zu bestätigen, dass sie korrekt als solche identifiziert werden, und so unser Verständnis davon, wie man Merge-Commits von regulären Commits unterscheidet, festigen.