Git 提交信息(commit message)写错了怎么修改

最近一次提交用 git commit --amend -m "新信息";已推送且无人拉取时可强推:git push --force-with-lease。历史中间的提交信息用 git rebase -i 标记 reword 修改。共享分支不要改写已推送历史。

最佳实践
Git 提交历史与版本恢复示意

还没推送的最近一次提交:git commit --amend -m "正确的信息" 即可。 已推送但确认没人拉取过时,amend 后用 git push --force-with-lease 强推覆盖。要改的不是最近提交,用交互式 rebase 的 reword。

改最近一次提交

git commit --amend -m "正确的提交信息"
# 已推送(确认安全的前提下):
git push --force-with-lease

改历史中间的提交信息

git rebase -i HEAD~5
# 把目标提交行的 pick 改成 reword(或 r),保存
# 逐个弹出的编辑器里修改提交信息

什么时候不能改

  • 别人已经基于你的提交拉了代码、开了分支——改写历史会让他们的历史分叉;
  • main/master 等共享分支上很早的提交——收益远小于协调成本;
  • 不确定就遵循原则:只在个人分支、合并前改写。

写好提交信息的建议

  • 首行 50 字内概括"做了什么",正文解释"为什么";
  • 用祈使句("修复登录超时"而不是"修复了登录超时");
  • 团队可接入 commitlint 强制 Conventional Commits 格式(feat:/fix:/docs:...)。

常见问题(FAQ)

Q:amend 会影响提交的哈希吗?

会。amend 产生全新提交(哈希改变),旧提交成为孤立对象。这就是为什么已推送的 amend 必须强推。

Q:只是漏加了文件也要改信息吗?

漏文件不用改信息:git add 漏掉的文件 && git commit --amend --no-edit,把文件补进同一提交。

Q:强推后同事的仓库会怎样?

他们 pull 会遇到历史分叉,需要 git fetch && git reset --hard origin/分支 对齐。所以改写共享历史前必须沟通。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台