Die letzte Commit-Mitteilung erneut schreiben
Du kannst die neueste Commitnachricht mithilfe des Befehls git commit --amend
ändern.
In Git ist der Text der Commit-Mitteilung Teil des Commits. Durch das Ändern der Commit-Mitteilung ändert sich auch die Commit-ID, also die SHA1-Prüfsumme, die den Commit benennt. Effektiv erstellst du einen neuen Commit, der den alten ersetzt.
Commit wurde nicht online veröffentlicht
Wenn der Commit nur in deinem lokalen Repository enthalten ist und nicht an GitHub.com gepusht wurde, kannst du die Commitnachricht mit dem Befehl git commit --amend
ändern.
- Navigiere in der Befehlszeile zu dem Repository, das den Commit enthält, den du ändern möchtest.
- Gib
git commit --amend
ein, und drücke die EINGABETASTE. - Bearbeite in einem Texteditor die Commit-Mitteilung, und speichere den Commit.
-
Du kannst einen Co-Autor hinzufügen, indem du einen Trailer zum Commit hinzufügst. Weitere Informationen findest du unter Einen Commit mit mehreren Autoren erstellen.
-
Du kannst Commits im Namen deiner Organisation erstellen, indem du einen Trailer zum Commit hinzufügst. Weitere Informationen findest du unter Einen Commit im Namen einer Organisation erstellen.
-
Der neue Commit und die neue Nachricht werden beim nächsten Push auf GitHub.com angezeigt.
Du kannst den standardmäßigen Text-Editor für Git ändern, indem du die Einstellung core.editor
änderst. Weitere Informationen findest du im Git-Handbuch unter Grundlegende Clientkonfiguration.
Ältere oder mehrere Commit-Mitteilungen ändern
Wenn du den Commit bereits an GitHub.com gepusht hast, musst du den Push eines Commits mit einer geänderten Nachricht erzwingen.
Wir raten dringend von einem erzwungenen Push ab, da sich dadurch der Verlauf deines Repositorys ändert. Wenn du den Push erzwingst, müssen alle, die dein Repository bereits geklont haben, ihren lokalen Verlauf manuell korrigieren. Weitere Informationen findest du im Git-Handbuch unter Wiederherstellen von einem Upstream-Rebase.
Ändern der Nachricht des zuletzt gepushten Commits
-
Führe die oben genannten Schritte aus, um die Commitnachricht zu ändern.
-
Verwende den Befehl
push --force-with-lease
, um das Pushen über den alten Commit zu erzwingen.git push --force-with-lease origin EXAMPLE-BRANCH
Ändern der Nachricht älterer oder mehrerer Commits
Wenn du die Mitteilungen für mehrere Commits oder für ältere Commits ändern musst, kannst du den interaktive Rebase nutzen und anschließend den Push zum Ändern des Commit-Verlaufs erzwingen.
-
Navigiere in der Befehlszeile zu dem Repository, das den Commit enthält, den du ändern möchtest.
-
Verwende den Befehl
git rebase -i HEAD~n
, um eine Liste der letztenn
Commits in deinem standardmäßigen Text-Editor anzuzeigen.# Displays a list of the last 3 commits on the current branch $ git rebase -i HEAD~3
Die Liste sieht ähnlich aus wie folgende:
pick e499d89 Delete CNAME pick 0c39034 Better README pick f7fde4a Change the commit message but push the same commit. # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
-
Ersetze vor jeder Commitnachricht, die du ändern möchtest,
pick
durchreword
.pick e499d89 Delete CNAME reword 0c39034 Better README reword f7fde4a Change the commit message but push the same commit.
-
Speichere und schließe die Datei mit der Commit-Liste.
-
Gib in jeder resultierenden Commit-Datei die neue Commit-Mitteilung ein, speichere die Datei, und schließe sie.
-
Wenn du bereit bist, deine Änderungen an GitHub zu pushen, verwendest du den Befehl „push --force“, um das Pushen über den alten Commit zu erzwingen.
git push --force origin EXAMPLE-BRANCH
Weitere Informationen zu einem interaktiven Rebase findest du im Git-Handbuch unter Interaktiver Modus.
Auch hier gilt: Das Ändern der Commit-Mitteilung führt zu einem neuen Commit mit einer neuen ID. In diesem Fall erhält aber auch jeder Commit, der nach dem geänderten Commit folgt, eine neue ID, da jeder Commit auch die ID des übergeordneten Commits enthält.
Wenn eine Commit-Mitteilung vertrauliche Informationen enthält, wird beim erzwungenen Push eines Commits mit geändertem Commit der ursprüngliche Commit möglicherweise nicht von GitHub entfernt. Der alte Commit wird nicht Teil eines nachfolgenden Klons, kann aber noch auf GitHub zwischengespeichert und über die Commit-ID zugänglich sein. Wende dich mit der alten Commit-ID an uns über das GitHub-Support-Portal, um ihn vom Remote-Repository löschen zu lassen.