Es gibt Möglichkeiten, die Nachricht von späteren Commits zu ändern:
git commit --amend # for the most recent commit
git rebase --interactive master~2 # but requires *parent*
Wie können Sie die Commit-Nachricht des allerersten Commits ändern (das kein übergeordnetes Element hat)?
Angenommen, Sie haben einen sauberen Arbeitsbaum, können Sie Folgendes tun.
# checkout the root commit
git checkout <sha1-of-root>
# amend the commit
git commit --amend
# rebase all the other commits in master onto the amended root
git rebase --onto HEAD HEAD master
Ab Git-Version 1.7.12 können Sie jetzt verwenden
git rebase -i --root
Zum Erweitern von ecdpalmas Antwort können Sie jetzt die Option --root
Verwenden, um rebase
mitzuteilen, dass Sie das Root/First Commit neu schreiben möchten:
git rebase --interactive --root
Anschließend wird das Root-Commit in der Liste der TODO-Neueinstellungen angezeigt, und Sie können auswählen, ob Sie es bearbeiten oder neu formulieren möchten:
reword <root commit sha> <original message>
pick <other commit sha> <message>
...
Dies ist die Erklärung von --root
Aus die Git-Rebase-Dokumentation (Hervorhebung meiner):
Setzen Sie alle Commits zurück, die über
<branch>
Erreichbar sind, anstatt sie mit einem<upstream>
Einzuschränken. Hiermit können Sie die Root-Festschreibung (en) für einen Zweig wiederherstellen.
Nur um eine Alternative zu den höher bewerteten Antworten zu bieten:
Wenn Sie ein Repo erstellen und wissen, dass Sie in Zukunft auf dem "ersten" echten Commit aufbauen, können Sie dieses Problem ganz vermeiden, indem Sie zu Beginn ein explizites leeres Commit ausführen:
git commit --allow-empty -m "Initial commit"
und erst dann beginnen "echte" Commits zu machen. Dann können Sie ganz einfach auf diese Weise einen Rebase durchführen, zum Beispiel git rebase -i HEAD^
Du könntest benutzen git filter-branch
:
cd test
git init
touch initial
git add -A
git commit -m "Initial commit"
touch a
git add -A
git commit -m "a"
touch b
git add -A
git commit -m "b"
git log
-->
8e6b49e... b
945e92a... a
72fc158... Initial commit
git filter-branch --msg-filter \
"sed \"s|^Initial commit|New initial commit|g\"" -- --all
git log
-->
c5988ea... b
e0331fd... a
51995f1... New initial commit