【后悔药】1. 遗漏提交文件、Message 写错?Git 这颗后悔药很好用

预计阅读时间:5 分钟

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。

最终历史看起来就像你一开始就提交完整了一样。

这在修补小遗漏时非常舒服。

Git 提交与修改流程图

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 点:

  1. git commit --amend 用来修改最近一次 commit。
  2. message 写错、少提交文件,都可以用 amend 修补。
  3. amend 最适合在还没 push之前使用。

Git 不怕你犯错,怕的是你不知道自己正在改哪里。


本文由 楸木 原创,转载请注明出处。

相关推荐

发现更多