修改最近一条Commit
如果只是想修最近一条 Commit, 直接使用命令
git commit --amend
就可以进行修改,命令行会进入vim的界面,让你修改上一次的提交 Message,改好消息,退出即可。这里还涉及到了 vim 的基本操作,好像有些人也不熟悉,本文会做最基本的讲解。
按字母 O 键进入编辑状态,开始修改内容。
按 Esc 键退出编辑状态,可以输入各种命令,最常用的是输入“:q”直接退出,输入“:wq”进行保存并退出。
修改过去若干条 Commit
如果要修改过去若干条 Commit 的 Message,不管改不改最新那一条,都会稍微有点麻烦,下面讲解一下。
首先看看我准备的例子是怎么样的,先执行
git log
可以看到我准备的例子里有 4 个Commit,分别叫提交 1、2、3、4。
几个提交都很相似,唯独“提交2”搞特殊,写错了,后面不是ABCD,而是XXXX。
我们想把 4 个 Commit 都做成 “提交n:ABCD”的形式,一家人整整齐齐。
由于后面已经叠了两个Commit,前面说的 amend 方法已经没有用了。
应该用 rebase -i ,后面跟上“提交2”之前的一个提交的ID。所以我们要输入“提交1”的ID,这样后面的提交2、3、4我们都可以修改了。
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”前面的 pick 改成 reword。还是前面说的方式, O 键进入修改。
给过去的提交选择操作命令
修改完之后,按 Esc 退出编辑,输入":wq" 保存并退出,之后就会进入“提交2”的编辑界面。
编辑“提交2”的信息
“提交2:XXXX”改成 “提交2:ABCD”
修改完之后还是按 Esc 退出编辑,输入":wq" 保存并退出。
之后就会显示 Successfully rebased and updated refs/heads/master,就是修改成功了。
再次执行
git log
看看我们的成果,可以看到现在4个提交都是整整齐齐的,结尾都是 ABCD 了。
历史提交都修复好了,最后我们就可以 push 到远程仓库啦!
$ git push origin (branch 名称) -f