如何使用git rebase修改提交列表中最早的提交信息?
修改Git最早提交信息的问题解答
1. 你的理解是否正确?
不对,问题根源不是“公共祖先”,而是Git的提交引用规则导致的:
- 当你用
HEAD~14时,Git会尝试找当前提交的第14个父提交,但你的分支总共只有14个提交,第一个提交根本没有父提交,所以会报fatal: invalid upstream错误。 - 直接指定最早提交的SHA执行
git rebase -i <SHA>时,Git默认的变基范围是该提交的下一个提交到HEAD,所以编辑器里只会显示后面13个提交,看不到最早的那个。
2. 怎么修改最早的提交信息?
因为你用的是本地私有仓库,不用顾忌历史改写影响他人,直接用下面两种简单方法就行:
方法一:用git rebase -i --root(最推荐)
这个命令会让你从分支的**根提交(也就是第一个提交)**开始编辑历史:
- 执行命令:
git rebase -i --root - 弹出的编辑器里,找到最早的那个提交,把开头的
pick改成reword(可以缩写成r)。 - 保存并退出编辑器,Git会自动弹出新的编辑器让你修改该提交的信息,改完保存退出就搞定了。
方法二:用git commit --amend配合临时分支(适合只想改第一个提交的情况)
- 先切换到最早的提交:
git checkout <最早提交的SHA> - 修改提交信息:
git commit --amend - 弹出编辑器改完信息后保存退出,然后切回原来的分支:
git checkout <你的分支名> - 把原来的分支重新基于修改后的第一个提交做变基:
(这个SHA可以用git rebase <修改后的第一个提交SHA>git log查到,就是你刚才修改后的那个提交)
不过方法一操作更简单,新手优先用这个。
内容的提问来源于stack exchange,提问作者Alex Boisot
相关产品推荐
相关产品推荐

