场景描述
当我们需要修改一个 git commit 的提交信息时,通常会有如下三种场景:
- 修改当前分支最新 commit 的提交信息
- 修改当前分支某历史 commit 的提交信息
- 修改当前分支第一个 commit 的提交信息
解决方式
我们以表格的形式描述如上三种场景下的解决方式:
修改 commit 提交信息场景 | 操作命令 |
---|---|
修改最新 commit 的提交信息 | git commit --amend |
修改某历史 commit 的提交信息 | git rebase -i father_commitId |
修改第一个 commit 的提交信息 | git rebase -i --root |
操作解释
修改最新 commit 的提交信息的操作解释可参考:git-book#Changing the Last Commit
简单说明如下:
- 如果需要修改提交信息,直接使用
git commit --amend
命令,在弹出的终端中修改提交信息,然后:wq
保存退出- 如果想新添加一些内容或者对最新的 commit 做一些修改和补充,但提交信息觉得合适不想修改,可以在添加完需要修改的内容后(指使用 git add 相关的操作),直接使用
git commit --amend --no-edit
命令,可以避免弹出不必要的终端编辑界面
修改某历史 commit 的提交信息的操作解释可参考:git-book#Changing Multiple Commit Messages
简单说明如下:
如果想要修改某个历史 commit,就需要找到这个历史提交的父提交,可以使用 git log 命令找到某个历史 commit 的父提交
修改第一个 commit 的提交信息的操作解释可参考 stackoverflow#edit-the-root-commit-in-git
也可以参考 git rebase -i --help
的提示信息,笔者操作系统 macOS,git version:2.19.2
修改第一个 commit 实操演示
git log
显示提交信息如下:
git show 04f437126a6152cd3d5a448a34b303f5e26ef575
显示提交内容如下:
git rebase -i --root
操作显示如下:
我们将左上角的 pick 改为 r, :wq
保存退出后显示如下:
r 参数会直接进入到修改 commit 提交信息的终端交互界面,比如我们将提交信息 a.txt
改为 add a.txt
(按 i 进入编辑模式,编辑完毕后按 esc 退出编辑模式,再按 :wq
保存退出),然后使用 git log
命令显示如下:
注意事项
如需将修改信息同步到远端仓库,可使用 git push -f
命令进行强制同步,该操作会覆盖远端分支的提交历史,请自行确认操作风险