在Git中编辑根提交?
有一些方法可以更改以后提交的消息:
git commit --amend # for the most recent commit git rebase --interactive master~2 # but requires *parent*
你怎么能改变第一次提交(没有父)的提交信息?
假设你有一个干净的工作树,你可以做以下事情。
# 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
从Git 1.7.12版本开始,你现在可以使用
git rebase -i --root
要扩展ecdpalma的答案 ,现在可以使用--root
选项来告诉你想要重写根/第一次提交的rebase
:
git rebase --interactive --root
然后根提交将出现在rebase TODO列表中,您可以select编辑或重新指定它:
reword <root commit sha> <original message> pick <other commit sha> <message> ...
这是根据Git rebase docs (重点是我的)的解释:
重申所有从
<branch>
可达的提交,而不是用<upstream>
限制它们。 这允许您重新分支分支上的根提交 。
另一种避免这个问题的方法是,如果你知道在未来的“第一次”提交之前将要重新定义,那么在开始时要做一个空的提交:
git commit --allow-empty -m "Initial commit"
然后才开始做“真正的”提交,那么你可以很容易地重新绑定,使用某种标准的方式,比如git rebase -i HEAD^
你可以使用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