Frage

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 (was kein Elternteil hat)?

War es hilfreich?

Lösung

Angenommen, Sie haben einen sauberen, funktionierenden Baum, 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

Andere Tipps

Ab der Git -Version 1.7.12, Sie können jetzt verwenden

git rebase -i --root

Erweitern ECDPALMA -Antwort, Sie können jetzt die verwenden --root Option zu erzählen rebase dass Sie das Root/First Commit neu schreiben möchten:

git rebase --interactive --root

Anschließend wird das Root Commit in der Liste von Rebase Todo angezeigt, und Sie können auswählen, um es zu bearbeiten oder neu zu formulieren:

reword <root commit sha> <original message>
pick <other commit sha> <message>
...

Dies ist die Erklärung von --root aus Die Git -Rebase -Dokumente (Hervorhebung meiner):

Alle Commits erreichen erreichbar aus <branch>, anstatt sie mit einem einzuschränken <upstream>. Auf diese Weise können Sie das Root Commit (en) in einem Zweig wiederherstellen.

Nur um eine Alternative zu den höher bewerteten Antworten zu bieten:

Wenn Sie ein Repo erstellen und im Voraus wissen, dass Sie in Zukunft zusätzlich zu seinem "ersten" echten Commit wiedergeboren werden, können Sie dieses Problem insgesamt vermeiden, indem Sie zu Beginn ein explizites leeres Commiting machen:

git commit --allow-empty -m "Initial commit"

Und erst dann beginnen Sie "echte" Commits. Dann können Sie beispielsweise auf den Standardweg auf den Standardweg wieder aufnehmen 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top