前言
在日常使用 Git 版本控制工具的时候,我们有时会遇到需要修改上次commit提交信息的情况,例如:修改上次提交信息中的错误内容,或者想为上次提交加入些新内容等等。
Git 覆写上次提交(amend)
我们可以使用git commit命令的amend选项来覆写上次提交。
$ git commit --amend
代码清单:使用
--amend选项覆写上次提交
执行此命令后,git会自动弹出编辑界面,让你可以修改上次的提交信息。
$ git commit --amend -m "an updated commit message"
代码清单:使用
-m选项快速修改
而使用--no-edit选项,表示不更动上次已经提交的信息。适用于添加新内容到上次提交的情况。
$ git commit --amend --no-edit
代码清单:使用
--no-edit选项追加内容
而使用--author选项,则可以仅修改提交者信息。
$ git commit --amend --author='someone <someone@example.com>'
代码清单:使用
--author选项修改提交者
注意事项
CodeBlock Loading...
注:关于
--amend的说明文档
需要注意的是:amend选项不会直接修改上次的提交,而是会新创建出一枚提交,包含了上次提交的全部内容与新添加的内容,原先的提交会被“删除”。可以观察到,修改前后的commit的hash值是不同的。
所以,对于已经推送到远程仓库的提交,需谨慎使用amend。
CodeBlock Loading...
代码清单:
git强制覆盖远程分支
对于已经推送到远程仓库的提交,可以使用强制推送来覆盖(谨慎使用)。

注意事项图 By Pikicast
图:
git commit --amend注意事项图「取自Pikicast」
References
- Git 实用技巧 - 覆写上次提交
- Atlassian Tutorials:https://www.atlassian.com/git/tutorials/rewriting-history
- 重写项目历史:https://github.com/geeeeeeeeek/git-recipes/wiki/2.7-%E9%87%8D%E5%86%99%E9%A1%B9%E7%9B%AE%E5%8E%86%E5%8F%B2