Appearance
Git 修改提交历史
1. 修改最近一条 Commit
如果只是想修最近一条 Commit,直接使用命令:
Bash
$ git commit --amend就可以进行修改,命令行会进入 Vim 的界面,让你修改上一次的提交 Message,改好消息,退出即可。
Note
对 Vim 的操作不太熟悉的话,可以修改
.gitconfig文件(默认在%homepath%路径下),将 Git 编辑器修改为 VSCode:INI[core] editor = code --wait --new-window ...1
2
3
- 按字母
O键进入编辑状态,开始修改内容; - 按
Esc键退出编辑状态,可以输入各种命令,最常用的是输入:q直接退出,输入:wq进行保存并退出;
2. 修改过去若干条 Commit
2.1. 查看 Git Log
执行:
Bash
$ git log可以看到我准备的例子里有 4 个 Commit,分别叫提交 1、2、3、4:

几个提交都很相似,唯独 “提交 2” 写错了,写成了 “XXXX”。我们希望把 4 个 Commit 的 Message 都写为 “提交 n:ABCD”。由于后面已经叠了两个 Commit,之前的 amend 方法不再适用。
2.2. rebase
此时应该用 rebase -i,后面跟上 “提交 2” 之前的一个提交的 ID,即 “提交 1” 的 ID,这样后面的提交 2、3、4 我们都可以修改了。
Bash
$ git rebase -i 8876a66df1ea4a7e911c271b2bd3292ddfa1eca0进入 Vim 界面,在顶部可以看到提交 2,3,4 都可修改:

这里有几种修改选择:
pick:保留该 Commit;reword:保留该 Commit,但需要修改该 Commit 的 Message;edit:保留该 Commit,但需要修改该提交(包括修改文件);squash:将该 Commit 和前一个 Commit 合并;fixup:将该 Commit 和前一个 Commit 合并,但不要保留该提交的注释信息;exec:执行 shell 命令;drop:丢弃这个 Commit;
可以按照实际需要去选择命令,我们这里需要的是 reword,修改 Message。
2.3. 选择命令
把 “提交 2” 前面的 pick 改成 reword,O 键进入修改:

修改完之后,按 Esc 退出编辑,输入 :wq 保存并退出,之后就会进入 “提交 2” 的编辑界面。

2.4. 修改 Message
将 “提交 2:XXXX” 修改成 “提交 2:ABCD”。

按 Esc 退出编辑,输入 :wq 保存并退出。
显示 Successfully rebased and updated refs/heads/master,即为修改成功。