Testen mit älteren Commits
In den vorherigen Schritten haben wir über HEAD
und wie man dessen Commit-Hash erhält gelernt. Jetzt schauen wir uns an, wie Git auf ältere Commits verweist.
Derzeit haben wir nur einen Commit in unserem Repository. Um zu zeigen, wie man auf ältere Commits verweist, müssen wir einen weiteren Commit erstellen.
Zunächst fügen wir eine weitere Zeile zur Datei message.txt
hinzu. Verwenden Sie den echo
-Befehl mit >>
, um Text an die Datei anzuhängen:
echo "This is a second message." >> message.txt
Jetzt überprüfen wir den Status:
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)
Jetzt stellen wir die Änderungen in den Staging-Bereich und erstellen einen neuen Commit:
git add message.txt
git commit -m "Add a second message"
Sie sollten eine Ausgabe sehen, die darauf hinweist, dass ein neuer Commit erstellt wurde:
[master a1b2c3d] Add a second message
1 file changed, 1 insertion(+)
Jetzt haben wir zwei Commits. Schauen wir uns das Protokoll erneut an:
git log --oneline
Die Option --oneline
gibt eine kompakte Ansicht des Protokolls. Sie sollten etwas wie Folgendes sehen (die Hashes werden unterschiedlich sein):
a1b2c3d (HEAD -> master) Add a second message
e4f5g6h Send a message to the future
Der oberste Commit ist der neueste, und es ist dort, wo HEAD
zeigt. Der darunter liegende Commit ist der ältere.
Git bietet Möglichkeiten, auf Commits relativ zu HEAD
zu verweisen. Der Commit direkt vor HEAD
kann als HEAD~1
oder HEAD^
bezeichnet werden. Versuchen wir, den Hash des vorherigen Commits mit git rev-parse
zu erhalten:
git rev-parse HEAD~1
Sie sollten den Hash des ersten Commits sehen, den Sie gemacht haben:
e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3
Dieser Hash sollte mit dem Hash des "Send a message to the future"-Commits in Ihrer git log --oneline
-Ausgabe übereinstimmen.
Sie können HEAD~2
, HEAD~3
usw. verwenden, um auf Commits weiter zurück in der Geschichte zu verweisen. Diese relative Referenzierung ist sehr nützlich, um sich in der Projektgeschichte zu bewegen und Operationen an bestimmten vergangenen Versionen auszuführen.