【git】【rebase】git修改提交信息的几种方法
git commit --amend -m
只能修改最后一次的提交信息。如果要修改更早的提交信息,我们需要使用 git rebase -i
。
总结一下修改历史提交信息的几种方法:
- 修改最后一次提交信息:
git commit --amend -m "新的提交信息"
- 修改任意历史提交信息(使用 rebase):
git rebase -i <commit-hash>~1
Windows 中使用 git rebase -i
的步骤:
-
运行
git rebase -i <commit-hash>
命令 -
在打开的 vim 编辑器中:
- 按
i
进入编辑模式 - 修改
目标pick
为reword
- 按
Esc
退出编辑模式 - 输入
:wq
保存并退出
- 按
-
在新的编辑器中:
- 按
i
进入编辑模式 - 修改提交信息
- 按
Esc
退出编辑模式 - 输入
:wq
保存并退出
- 按
如果在过程中遇到问题:
- 使用
:q!
放弃更改并退出 - 使用
git rebase --abort
取消整个 rebase 操作 - 使用
git rebase --continue
继续未完成的 rebase
- 使用 filter-branch(适用于特定场景):
git filter-branch --msg-filter 'if [ "$GIT_COMMIT" = "要修改的提交hash" ]; then echo "新的提交信息"; else cat; fi' HEAD
需要注意的是:
- 修改历史提交信息会改变提交的 hash 值
- 如果这些提交已经推送到远程仓库,你需要使用
git push --force
来推送更改 - 如果其他人已经基于旧的提交进行了开发,修改历史可能会导致合并冲突
在团队协作中修改历史提交时要特别小心,最好先和团队成员沟通。