Eine Commit-Mitteilung ändern
Wenn eine Commit-Mitteilung unklare, falsche oder vertrauliche Informationen enthält, können Sie sie lokal ändern und einen neuen Commit mit einer neuen Mitteilung zu GitHub Enterprise pushen. Sie können auch fehlende Informationen zu einer Commit-Mitteilung hinzufügen.
Die letzte Commit-Mitteilung erneut schreiben
Die letzte Commit-Mitteilung können Sie mit dem Befehl 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 erstellen Sie einen neuen Commit, der den alten ersetzt.
Commit wurde nicht online veröffentlicht
Wenn der Commit nur in Ihrem lokalen Repository vorhanden ist und nicht zu Ihre GitHub Enterprise Server-Instanz gepusht wurde, können Sie die Commit-Mitteilung mit dem Befehl git comimt --amend
ändern.
- Navigieren Sie in der Befehlszeile zu dem Repository, das den Commit enthält, den Sie ändern möchten.
- Geben Sie
git commit --amend
ein, und drücken Sie die Eingabetaste. -
Bearbeiten Sie in einem Texteditor die Commit-Mitteilung, und speichern Sie den Commit.
- Sie können einen Co-Autor hinzufügen, indem Sie einen Trailer zum Commit hinzufügen. For more information, see "Creating a commit with multiple authors."
Der neue Commit und die neue Commit-Mitteilung werden beim nächsten Push auf Ihre GitHub Enterprise Server-Instanz angezeigt.
Sie können den standardmäßigen Texteditor für Git ändern, indem Sie die Einstellung core.editor
ändern. Weitere Informationen finden Sie unter „Grundlegende Client-Konfiguration“ im Git-Handbuch.
Ältere oder mehrere Commit-Mitteilungen ändern
Wenn Sie den Commit bereits zu Ihre GitHub Enterprise Server-Instanz gepusht haben, müssen Sie den Push des Commits mit einer geänderten Mitteilung erzwingen.
Wir raten dringend von einem erzwungenen Push ab, da sich dadurch der Verlauf Ihres Repositorys ändert. Wenn Sie den Push erzwingen, müssen alle, die Ihr Repository bereits geklont haben, ihren lokalen Verlauf manuell anpassen. Weitere Informationen finden Sie unter „Von einem vorgelagerten Rebase wiederherstellen“ im Git-Handbuch.
Die Mitteilung des zuletzt gepushten Commits ändern
- Führen Sie die o. g. Schritte aus, um die Commit-Mitteilung zu ändern.
-
Erzwingen Sie mit dem Befehl
push --force
den Push über den alten Commit.$ git push --force example-branch
Die Mitteilung älterer oder mehrerer Commit-Mitteilungen ändern
Wenn Sie die Mitteilungen für mehrere Commits oder für ältere Commits ändern müssen, können Sie den interaktive Rebase nutzen und anschließend den Push zum Ändern des Commit-Verlaufs erzwingen.
-
Navigieren Sie in der Befehlszeile zu dem Repository, das den Commit enthält, den Sie ändern möchten.
-
Geben Sie den Befehl
git rebase -i HEAD~n
ein, um eine Liste der letztenn
Commits in Ihrem Standard-Texteditor anzuzeigen.$ git rebase -i HEAD~3 # Displays a list of the last 3 commits on the current branch
The list will look similar to the following:
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
-
Replace
pick
withreword
before each commit message you want to change.pick e499d89 Delete CNAME reword 0c39034 Better README reword f7fde4a Change the commit message but push the same commit.
-
Speichern und schließen Sie die Datei mit der Commit-Liste.
-
Geben Sie in jeder resultierenden Commit-Datei die neue Commit-Mitteilung ein, speichern Sie die Datei, und schließen Sie sie.
-
Erzwingen Sie den Push der geänderten Commits.
$ git push --force
Weitere Informationen zur interaktiven Rebase finden Sie unter „Interaktiver Modus“ im Git-Handbuch.
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 Enterprise entfernt. Der alte Commit wird nicht Teil eines nachfolgenden Klons, kann aber noch auf GitHub Enterprise zwischengespeichert und über die Commit-ID zugänglich sein. Wenden Sie sich mit der alten Commit-ID an Ihr GitHub Enterprise-Websiteadministrator, um ihn vom Remote-Repository löschen zu lassen.