git 修改历史 commit message

发布于:2024-04-03 ⋅ 阅读:(102) ⋅ 点赞:(0)

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 改为 er (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 **。

后续操作相同。


以上。