Git Commit 写错了怎么办?一个 amend 就能救回来
刚提交完代码,你突然发现一件很尴尬的事:
commit message 写错了。
或者更糟一点:
代码提交了,README 忘记加了。
这时候很多人的第一反应是慌,甚至想立刻执行:
git reset --hard
先别急。
如果你的代码只是刚 commit,还没有 push 到远程仓库,这种问题其实非常好处理。Git 给我们准备了一颗很常用的“后悔药”:git commit --amend。
它的作用很简单:
修改最近一次 commit。
注意,是“最近一次”。这也是它好用但不能乱用的原因。
场景一:Commit Message 写错了
比如你刚提交了一次代码:
git commit -m "fix bug"
提交完才发现,这个 message 太模糊了。
过几天再看,你可能根本想不起来这个 bug 是什么。团队同事看到,也不知道你到底修了哪里。
更好的写法可能是:
fix(login): resolve token refresh issue
这时候不需要重新提交一遍,直接执行:
git commit --amend
Git 会打开编辑器,让你修改最近一次 commit 的 message。
改完保存,这次提交记录就被更新了。
如果你不想打开编辑器,也可以一行命令完成:
git commit --amend -m "fix(login): resolve token refresh issue"
这样就把最近一次 commit message 改掉了。
场景二:少提交了一个文件
另一个更常见的情况是:文件漏提交了。
比如你刚 commit 完,突然发现:
README.md 忘记 add 了。
这时候也不用重新创建一个“补交 README”的 commit。
你可以这样做:
git add README.md
git commit --amend
Git 会把 README.md 合并进上一次 commit。
最终历史看起来就像你一开始就提交完整了一样。
这在修补小遗漏时非常舒服。

amend 适合什么时候用?
git commit --amend 很适合处理这类小问题:
- commit message 写错了
- 少提交了一个文件
- 刚提交后发现有一处小改动
- 想让最近一次提交看起来更完整
但它有一个重要前提:
最好只在还没 push 之前使用。
因为 amend 本质上不是“编辑原 commit”,而是创建了一个新的 commit 来替换旧的 commit。
如果这个 commit 已经 push 到远程仓库,别人可能已经拉取了旧版本。你再 amend,就可能造成远程历史不一致。
所以新手记住一句话就够了:
本地刚提交,放心 amend;已经 push,先别乱动。
不要什么都用 reset
很多人一听到“提交错了”,脑子里第一个命令就是 reset。
但如果只是 message 写错、少提交文件,真的没必要上来就 reset。
reset 更像是撤回提交,而 amend 更像是修补最近一次提交。
小问题用 amend,会更干净,也更不容易误删代码。
一个小练习
你可以自己建一个测试仓库,试一下:
git init
echo hello > a.txt
git add a.txt
git commit -m "test"
echo readme > README.md
git add README.md
git commit --amend
然后执行:
git log --stat
你会看到,README.md 已经被合并进最近一次提交里了。
总结
这篇只记住 3 点:
git commit --amend用来修改最近一次 commit。- message 写错、少提交文件,都可以用 amend 修补。
- amend 最适合在还没 push之前使用。
Git 不怕你犯错,怕的是你不知道自己正在改哪里。
本文由 楸木 原创,转载请注明出处。