Git 修改或删除某次提交信息
Git 修改或删除某次提交信息
- 情况一:未推送到远程仓库
- 修改提交信息
- 删除提交信息(替换为空信息)
- 修改历史提交信息
- 删除历史提交信息
- 情况二:已推送到远程仓库
- 修改最新提交信息并推送到远程仓库
- 修改历史提交信息并推送到远程仓库
情况一:未推送到远程仓库
如果你要修改或删除的提交是最新的一次提交(即 HEAD 指向的提交),可以使用 git commit --amend
命令。
修改提交信息
git commit --amend -m "新的提交信息"
上述命令会直接用 "新的提交信息"
替换掉上一次的提交信息。
删除提交信息(替换为空信息)
git commit --amend -m ""
执行该命令后,提交信息会被替换为空字符串。
如果你想要修改或删除的不是最新的提交,而是历史提交,可以使用 git rebase -i
(交互式变基)命令。
修改历史提交信息
假设你要修改倒数第三次的提交信息,操作步骤如下:
- 启动交互式变基:
git rebase -i HEAD~3
上述命令中的 HEAD~3
表示从当前 HEAD
开始往前数 3 个提交。执行该命令后,会打开一个文本编辑器,显示类似如下内容:
pick 123abc 原始提交信息 1
pick 456def 原始提交信息 2
pick 789ghi 原始提交信息 3
# ...
- 将你要修改的提交前的
pick
改为reword
或r
,例如修改第二个提交信息:
pick 123abc 原始提交信息 1
reword 456def 原始提交信息 2
pick 789ghi 原始提交信息 3
- 保存并关闭编辑器,Git 会依次处理每个提交。当遇到
reword
的提交时,会再次打开编辑器让你输入新的提交信息。输入完成后保存并关闭编辑器,即可完成提交信息的修改。
删除历史提交信息
步骤与修改历史提交信息类似,只是在输入新的提交信息时将内容清空,然后保存并关闭编辑器。
情况二:已推送到远程仓库
如果要修改或删除的提交已经推送到远程仓库,在修改本地提交信息后,还需要强制推送到远程仓库。
修改最新提交信息并推送到远程仓库
git commit --amend -m "新的提交信息"
git push -f origin <分支名>
上述命令中,-f
是 --force
的缩写,表示强制推送,会覆盖远程仓库上的提交历史,请谨慎使用。
修改历史提交信息并推送到远程仓库
在使用 git rebase -i
修改历史提交信息后,同样需要强制推送到远程仓库:
git push -f origin <分支名>
强制推送可能会影响其他团队成员的工作,因此在多人协作的项目中,建议先与团队成员沟通协调。