Verwenden von git log --ancestry-path
In diesem Schritt werden wir untersuchen, wie man den Befehl git log --ancestry-path
verwendet. Dieser Befehl ist nützlich, um die Commit-Historie entlang eines bestimmten Pfads zwischen zwei Commits anzuzeigen. Er hilft Ihnen, die Abstammungslinie der Änderungen zu verstehen.
Zunächst erstellen wir ein einfaches Git-Repository und machen ein paar Commits, um ein Szenario für die Verwendung von --ancestry-path
einzurichten.
Navigieren Sie in Ihr Projektverzeichnis:
cd ~/project
Erstellen Sie ein neues Verzeichnis für dieses Lab und initialisieren Sie ein Git-Repository:
mkdir ancestry-lab
cd ancestry-lab
git init
Sie sollten eine Ausgabe sehen, die anzeigt, dass ein leeres Git-Repository initialisiert wurde:
Initialized empty Git repository in /home/labex/project/ancestry-lab/.git/
Jetzt erstellen wir eine Datei und machen den ersten Commit:
echo "Initial content" > file1.txt
git add file1.txt
git commit -m "Initial commit"
Sie werden eine Ausgabe sehen, die den Commit bestätigt:
[master (root-commit) <commit-hash>] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 file1.txt
Als Nächstes machen wir einen weiteren Commit:
echo "Adding more content" >> file1.txt
git add file1.txt
git commit -m "Add more content"
Sie werden eine Ausgabe für den zweiten Commit sehen:
[master <commit-hash>] Add more content
1 file changed, 1 insertion(+)
Jetzt erstellen wir einen neuen Zweig (branch) und machen einen Commit auf diesem Zweig:
git branch feature
git checkout feature
echo "Feature work" > file2.txt
git add file2.txt
git commit -m "Add feature file"
Sie werden eine Ausgabe für das Erstellen des Zweigs, das Umschalten auf ihn und den neuen Commit sehen:
Switched to a new branch 'feature'
[feature <commit-hash>] Add feature file
1 file changed, 1 insertion(+)
create mode 100644 file2.txt
Gehen wir zurück zum master-Zweig und machen einen weiteren Commit:
git checkout master
echo "More master work" >> file1.txt
git add file1.txt
git commit -m "More master content"
Sie werden eine Ausgabe für das Umschalten der Zweige und den neuen Commit sehen:
Switched to branch 'master'
[master <commit-hash>] More master content
1 file changed, 1 insertion(+)
Jetzt haben wir eine Commit-Historie mit einem Zweig. Verwenden wir git log
, um die vollständige Historie anzuzeigen:
git log --all --decorate --oneline
Sie werden ein Log ähnlich diesem sehen (Commit-Hashes und Reihenfolge können variieren):
<commit-hash> (HEAD -> master) More master content
<commit-hash> Add more content
<commit-hash> (feature) Add feature file
<commit-hash> Initial commit
Jetzt verwenden wir git log --ancestry-path
. Dieser Befehl erfordert zwei Commit-Referenzen. Er zeigt die Commits an, die Vorfahren des zweiten Commits und Nachfahren des ersten Commits sind.
Finden wir die Commit-Hashes für "Initial commit" und "More master content". Sie können diese aus der Ausgabe von git log --all --decorate --oneline
erhalten. Ersetzen Sie <initial-commit-hash>
und <master-commit-hash>
durch die tatsächlichen Hashes aus Ihrer Ausgabe.
git log --ancestry-path <initial-commit-hash> <master-commit-hash> --oneline
Dieser Befehl zeigt die Commits auf dem Pfad vom ersten Commit bis zum neuesten Commit auf dem master-Zweig an. Sie sollten die Commits "Initial commit", "Add more content" und "More master content" sehen.
Die Option --ancestry-path
ist nützlich, um die direkte Entwicklungslinie zwischen zwei Punkten in Ihrer Historie zu verstehen und Commits von anderen Zweigen zu ignorieren, die später möglicherweise zusammengeführt wurden.