7648 Stimmen

Wie können bestehende, aber noch nicht gepushte Commit-Nachrichten geändert werden?

Ich habe im Commit-Nachricht das falsche geschrieben.

Wie kann ich die Nachricht ändern? Der Commit wurde noch nicht gepusht.

868 Stimmen

Für diejenigen, die noch neu in Git sind: Lauries Hinweis darauf, dass noch nicht gepusht wurde, ist wichtig. Wie beim Rebasieren ändert sich dadurch die Historie. Wenn jemand zwischen der originalen und der umgeschriebenen Historie von deinem Repository geklont/gezogen hat, wird er nach der Änderung nicht mehr in der Lage sein, zu ziehen (für diesen Branch).

368voto

Mark Punkte 5973

Sie können auch git filter-branch dafür verwenden.

git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD

Es ist nicht so einfach wie ein triviales git commit --amend, aber es ist besonders nützlich, wenn Sie bereits einige Merges nach Ihrer fehlerhaften Commit-Nachricht haben.

Beachten Sie, dass dies versuchen wird, jeden Commit zwischen HEAD und dem fehlerhaften Commit neu zu schreiben. Sie sollten Ihren msg-filter-Befehl also sehr klug wählen ;-)

4 Stimmen

Gibt es eine Version davon, die den Commit nicht ändert, wenn das reguläre Ausdruck nichts findet?

3 Stimmen

Soweit ich weiß, wird filter-branch --msg-filter auf jeden Fall neue Commits generieren. Du könntest jedoch innerhalb des msg-filters überprüfen, ob das sed erfolgreich war und diese Information verwenden, wenn die filter-branch Operation endet, um deinen Baum auf refs/original zurückzusetzen.

4 Stimmen

@DavidHogue Dies ist nur dann wahr, wenn die filter-branch-Methode verwendet wird. Die Commit-IDs nach einem modifizierten Commit ändern sich nicht, wenn Sie den interaktiven Rebase verwenden.

341voto

krevedko Punkte 4097

Ich bevorzuge diese Methode:

git commit --amend -c 

Andernfalls wird es ein neuer Commit mit einer neuen Commit-ID geben.

10 Stimmen

Für mich erstellt Verwendung Ihres oben genannten Befehls tatsächlich einen neuen Commit mit einer neuen Commit-ID sowie einem zusätzlichen Commit, der "Merge-Zweig" als Standard-Commit-Nachricht sagt.

49 Stimmen

Das Ändern von immer erstellt immer einen neuen Commit mit einer neuen Commit-ID. Die Commit-ID ist der SHA-Hash des Inhalts des Commits, einschließlich der Commit-Nachricht und der autorisierten/übermittelten Zeitstempel. Dies ist ein Feature von Git, das, mit Ausnahme von Hash-Kollisionen, sicherstellt, dass zwei Commits mit derselben ID genau derselbe Commit mit genau demselben Inhalt, der gleichen Historie usw. sind.

8 Stimmen

Stimme Emil zu. Außerdem steht in der Dokumentation, dass "-c" nur Git mitteilt, welche Commit-Nachricht als Standardvorlage für Ihren neuen Commit verwendet werden soll. Es wird bereits standardmäßig "-c " ausführen, daher ist es nicht notwendig, dies anzugeben.

318voto

Akhilraj N S Punkte 8641

Wenn Sie das Git GUI-Tool verwenden, gibt es eine Schaltfläche namens Letzten Commit ändern. Klicken Sie auf diese Schaltfläche, und dann werden Ihre zuletzt commiteten Dateien und Nachricht angezeigt. Bearbeiten Sie einfach diese Nachricht, und Sie können sie mit einer neuen Commit-Nachricht bestätigen.

Oder verwenden Sie diesen Befehl von einer Konsole/Terminal:

git commit -a --amend -m "Meine neue Commit-Nachricht"

7 Stimmen

Diese Antwort ist wortwörtlich identisch mit dieser alten Antwort. Hast du bereits vorhandene Antworten überprüft, bevor du eine weitere bereitgestellt hast?

2 Stimmen

Diese Antwort ist nicht wortwörtlich identisch. Sie ist nicht einmal identisch in der Bedeutung, da diese Antwort die Information hinzufügt, dass dies auch in einem GUI durchgeführt werden kann. Nicht sicher, auf welches GUI er sich bezieht. Ich weiß, dass GitHub Desktop diese Funktion hat und die meisten anderen GUI-Clients wahrscheinlich auch oder sie können mehr.

291voto

Shoaib Ud-Din Punkte 4524

Sie können Git-Rebasing verwenden. Wenn Sie beispielsweise zurück zum Commit bbc643cd ändern möchten, führen Sie Folgendes aus:

$ git rebase bbc643cd^ --interactive

Ändern Sie im Standardeditor 'pick' in 'edit' in der Zeile des Commits, den Sie ändern möchten. Machen Sie Ihre Änderungen und stagen Sie sie dann mit

$ git add 

Jetzt können Sie

$ git commit --amend

verwenden, um den Commit zu ändern, und danach

$ git rebase --continue

um wieder zum vorherigen Head-Commit zurückzukehren.

2 Stimmen

Wenn Sie sicherstellen möchten, dass Ihre Änderung von git commit --amend übernommen wurde, können Sie git show verwenden, und es wird die neue Nachricht anzeigen.

282voto

Heena Hussain Punkte 3643
  1. Wenn Sie nur Ihre letzte Commit-Nachricht ändern möchten, tun Sie Folgendes:

    git commit --amend

Dadurch gelangen Sie in Ihren Texteditor und können die letzte Commit-Nachricht ändern.

  1. Wenn Sie die letzten drei Commit-Nachrichten ändern möchten oder eine der Commit-Nachrichten bis zu diesem Zeitpunkt, geben Sie HEAD~3 an das git rebase -i Kommando an:

    git rebase -i HEAD~3

7 Stimmen

Diese frühere Antwort sagt bereits, dass Sie git commit --amend verwenden können, und es sagt auch, dass Sie git rebase -i HEAD~commit_count verwenden können, alles, was Sie getan haben, war 3 für commit_count einzusetzen.

1 Stimmen

Auch abgewertet. Die Leute nehmen sich einfach nicht die Mühe, vorhandene Antworten zu lesen.

1 Stimmen

Dies ist keine vollständige Antwort, es fehlt "Finden Sie den Commit, den Sie möchten, ändern Sie 'pick' in 'r' (reword)..." wie hier erklärt stackoverflow.com/a/28421811/1818723

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X