目录
- 1,修改当前的
- 2,修改历史的
- 1,先查看 log
- 2,开始修改
- 3,其他注意点
- 1,中途不想修改了
- 2,commit ID 会发生变化
- 3,推送远程
- 4,精准定位
1,修改当前的
直接使用下面的命令,如果打开的是 vim
编辑器,先切换到英文输入法,
键入 i
开始编辑(编辑完后也记得转为英文输入法),
再键入 Esc
结束编辑并键入 :wq
保存退出即可。
git commit --amend
2,修改历史的
步骤:
1,先查看 log
git log --oneline
# 查看前 3 步的 log
git log --oneline -3
2,开始修改
通过 rebase 变基实现
查看最近的3次提交:
git rebase -i HEAD~3
当通过查看 log 定位出要修改的 commit 的位置后,就可以进行修改。
比如要修改倒数第3次提交,将想要修改的 commit 对应的 pick
改为 e
或 r
(2个都可以)。然后退出编辑并保存。
下面展示后续操作的是修改为
e
的操作,修改为r
的后续操作类似。
注意此时的状态没有再某个分支上,而是在【ee38286a】的这次 commit 上:
此时,就可以执行 git commit --amend
来修改目标 commit message 了。
修改完后,执行 git rebase --continue
继续变基。因为刚刚设置了只修改一条 commit message,所以会直接到最后一步 Successfully:
此时当前状态也已经恢复:
3,其他注意点
1,中途不想修改了
如果在执行了 git rebase
之后,突然又不想修改了。那可以执行下面的命令退出变基操作:
git rebase --abort
2,commit ID 会发生变化
如果修改的是倒数第3个 commit。注意:从倒数第3~倒数第1的这3个 commit 的 ID 都会发生变化。
3,推送远程
无论是修改当前还是历史的,在本地做了修改之后,需要 git push -f
强制推送远程。
4,精准定位
如果想修改的 commit message 不是倒数第3次,而是倒数十几次,甚至更前,设置一个大的数字不太友好。
而且我们已经知道是哪个 commit 了,所以可直接定位。以下图为例:
如果想修改的就是 【ee38286 第3次提交】 这个 commit,可以:
git rebase ee38286^ --interactive
此时打开的编辑页面,第1个就是这个 commit。
注意 ee38286^ 这里有个 ^。如果没有它,那编辑页面显示的**第一个就是 【2992dec 第4次提交】这个 commit **。
后续操作相同。
以上。