Testen von nicht geänderten Commits
In diesem Schritt werden wir einen neuen Commit erstellen, ohne die --amend
-Option zu verwenden, und beobachten, wie er in git log
und git reflog
erscheint. Dies wird Ihnen helfen, besser zu verstehen, wie diese Befehle die Historie unterschiedlich verfolgen.
Zunächst fügen wir unserer message.txt
-Datei etwas mehr Inhalt hinzu. Wir fügen eine neue Zeile an:
echo "Hello again, Future Me!" >> message.txt
Der >>
-Operator fügt den Text an die bestehende Datei an, anstatt sie zu überschreiben.
Jetzt überprüfen wir den Status, um die Änderungen zu sehen:
git status
Sie sollten eine Ausgabe sehen, die anzeigt, 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")
Als Nächstes müssen wir die Änderungen stage'n:
git add message.txt
Und jetzt erstellen wir einen neuen Commit, ohne den vorherigen zu ändern:
git commit -m "Add another message"
Sie sollten eine Ausgabe sehen, die den neuen Commit bestätigt:
[master 1a2b3c4] Add another message
1 file changed, 1 insertion(+)
Jetzt überprüfen wir erneut git log
:
git log --oneline
Diesmal sollten Sie zwei Commits sehen:
1a2b3c4 (HEAD -> master) Add another message
a1b2c3d Send a message to the future
Beide Commits sind in git log
sichtbar, da der zweite Commit auf dem ersten aufgebaut wurde und die Historie des Branches erweitert.
Schließlich überprüfen wir git reflog
:
git reflog
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
1a2b3c4 (HEAD -> master) HEAD@{0}: commit: Add another message
1a2b3c4 (HEAD -> master) HEAD@{1}: commit (amend): Send a message to the future
e4f5g6h HEAD@{2}: commit (initial): Send a message to the future
Beachten Sie, dass git reflog
alle Aktionen anzeigt: den Initial-Commit, den geänderten Initial-Commit und den neuen Commit, den wir gerade erstellt haben. Jede Aktion, die HEAD
bewegt hat, wird aufgezeichnet.
Dieser Schritt zeigt, dass wenn Sie einen neuen Commit ohne --amend
erstellen, sowohl git log
als auch git reflog
den neuen Commit anzeigen, aber git reflog
weiterhin die Historie des geänderten Commits beibehält, was git log
nicht tut.