首页/开发/Git 与协作速查/git commit --amend 修补上一条提交
Git 基础与命令88 条

git commit --amend 修补上一条提交

改写上一条提交:补文件或改信息,生成新的提交哈希;默认保留作者与作者时间,更新提交者信息与时间。

Git 与协作速查开发更新于 2026-10-13

git commit --amend 是什么

git commit --amend 用来修补最近一次提交:把当前暂存区的内容并进上一条提交,或者只改提交信息。它不会新增一条提交,而是生成一条替换原提交的新提交,因此哈希会变化。默认保留原作者与作者时间,更新提交者与提交时间。

和 rebase -i 的分工

只需要改最近一条时,amend 最省事;要改历史中更早的提交,就得用 git rebase -i 配合 edit 或 reword。一条实用的判断标准是:问题只出在刚刚提交的那条上就用 amend,涉及多条就用交互式变基。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git commit --amend [--no-edit] [-m <信息>]
效果替换最近一条提交,哈希发生变化
--no-edit沿用原提交信息,只补内容
--reset-author把作者改成当前用户并刷新作者时间
适用边界仅最近一条,多条需要用 rebase -i

典型使用场景

  • 补漏文件:提交后才发现有文件忘了 add,用它补进去
  • 修正信息:提交信息写错字,或漏了关键背景说明
  • 清理临时内容:发现把调试语句一起提交了,改掉再 amend
  • 合并琐碎提交:刚提交完又做了一点小修补,合并进上一条
  • 更新签核:需要变更提交者归属时使用 --reset-author

常用示例

常用示例
git add forgotten.txt            # 先把漏掉的文件加入暂存区
git commit --amend --no-edit     # 沿用原信息,把文件补进上一条
git commit --amend -m 'fix: 修正重试判断'   # 重新写提交信息
git commit --amend --reset-author           # 更新作者与作者时间
git log -1 --stat                # 核对修补后的提交内容
git push --force-with-lease origin feature  # 已推送时安全覆盖远端

常见用法与结果

用法作用注意
amend --no-edit补内容,信息保持不变最常用的一种
amend -m <信息>补内容并改写信息两者一起生效
amend --reset-author更新作者身份作者与作者时间都会刷新
amend --no-verify跳过钩子校验谨慎使用
已推送的提交 amend 之后必须强推,会改写他人看到的历史。共享分支上先确认没有同事基于旧提交继续工作。
动手前先用 git status 复核暂存区:amend 会把当前暂存区的内容一并并入,如果不注意,之前 add 的其它文件也会被带进这条新提交。

易错点

  • amend 之前暂存区里已有不该提交的文件时,内容会被一起带进新提交,先 git status 复核
  • amend 只改最近一条,需要改多条要用 git rebase -i 配合 edit 或 reword
  • 已推送的提交 amend 后需要强推,共享分支上会打断协作者,先确认分支归属
  • 习惯性加 --no-verify 会跳过钩子校验,把格式问题直接写进历史

数据来源与参考

  • Git 官方文档:git-commit(--amend)
  • Pro Git 2nd Edition · 7.6 重写历史
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌