具体来说,有两种修改方法,分别对应两种不同情况:
- git commit --amend:修改最近一次 commit 的 message;
- git rebase -i:修改某次 commit 的 message。
接下来,我们分别来说这两种方法。
修改最新提交信息
有时候,刚提交完一个 commit,但是发现 commit 的描述不符合规范或者需要纠正,这时候,可以通过 git commit --amend 命令来修改刚刚提交的信息。具体修改步骤如下:
# 1.查看当前分支的日志记录。
$ git log --oneline
# 2.更新最近一次提交的信息
$ git commit --amend # 命令执行后会进入一个交互界面,在交互界面中,修改最近一次的信息后保存
# 3.查看提交信息是否更新
$ git log --oneline
修改某次提交信息
如果想修改的信息不是最近一次的,可以通过 git rebase -i <父commit ID>命令来修改。这个命令在实际开发中使用频率比较高,一定要掌握。具体来说,使用它主要分为 4 步。
# 1.查看当前分支的日志记录。
$ git log --oneline
# 2.修改父commit id为<SHA1>的提交
$ git rebase -i <SHA1> # 运行命令进入交互界面后,修改最近一次的提交信息,之后保存退出
# 3.查看提交信息是否被更新
$ git log --oneline
注意:
- 这里一定要传入想要变更信息的父 commit ID:git rebase -i <父 commit ID>。
- git commit --amend 只会变更最近一次的 commit ID,但是 git rebase -i 会变更父 commit ID 之后所有提交的 commit ID。
- 如果当前分支有未 commit 的代码,需要先执行 git stash 将工作状态进行暂存,当修改完成后再执行 git stash pop 恢复之前的工作状态。
修改多个提交消息
如果需要修改多个提交或旧提交的消息,可以使用git rebase命令,然后强制推送以更改提交历史记录。
# 1.查看当前分支的日志记录。
$ git log --oneline
# 2.使用 git rebase -i HEAD~n 命令在默认文本编辑器中显示最近n个提交的列表
$ git rebase -i HEAD~3
# 3.在要更改的每个提交消息的前面,用 reword 替换 pick,保存并关闭提交列表文件。
# 4.接着依次弹出n个提交文件,输入入新的提交消息,保存文件,然后关闭它。
# 5.查看当前分支最新的日志记录
$ git log --oneline
# 6.将更改推送到GitHub,请使用git push -f命令强制推送旧提交。
$ git push -f origin master