修改提交注释与作者
1.修改最近一次提交信息
git commit --amend -m '修正信息'
可以通过:git commit --amend -m 注释
来修改上一次的提交信息:(amend是修复的意思)
git commit --amend
当需要为最近一次提交添加大量注释时,可以直接使用该指令进入vim
编辑器编辑:
这样的好处是:错误的提交和修正后的提交经过该命令修正后,只变为一次提交,而不是两次提交
git commit --amend --author 'Name<email>'
用于修改最近一次提交的配置信息,包含作者和注释信息。执行命令时会进入vim
编辑器编辑注释信息:
修改前该分支上最近两次的提交信息为:
修改后的最近两次提交信息为:
可以看到成功地改变了最新一次提交的作者和提交注释。
注意:修改提交注释的同时,虽然提交的内容相同,但是提交前后的commit_id是不同的,说明创建了一个新提交替换了原来需要修正的提交。如下图中的提交5与提交3所示:
2.修改特定提交信息
如图所示,在test
分支进行了四次提交。现在我们想要修改第三次提交的提交信息:
git rebase -i commit_id
通过以上指令可以进入rebase
交互模式,并显示commit_id
之后的提交信息。比如:若命令中的commit_id
为第一次提交的commit_id
,那么就会显示第2~4次的提交信息。这里我们需要修改第三次提交的信息,只需要将它指定为第二次提交的commit_id
即可。执行以下命令,进入vim
编辑器:
git rebase -i 678e0
在这个界面中,我们可以通过将pick
参数修改为其他rebase
提供的参数,从而对第三次错误提交进行修改。有两个参数可以实现这一目的:
这里涉及到vim
编辑器的使用方式:
shift + A
为插入命令,可进入vim
编辑器的编辑模式;- 编辑完成后,先按
ESC
回到vim
编辑器的命令行模式,再输入:wq
表示保存并退出编辑器;
reword
参数
该参数的意思是:直接修改设置了该参数的提交的提交注释。这里应该将第三次提交的pick
参数改为reword
:
通过:wq
保存并退出,随后再次进入vim
编辑器,这次是修改设置了reword
参数的提交的提交注释:
将它改为正确的提交信息:
通过:wq
保存并退出vim
编辑器,完成错误提交信息的修改,再次查看历史提交信息:
可以发现:错误的提交信息得到了纠正,并且这次提交及其之后的提交的commit_id
都发生了变化。说明git
新创建了对应数目的提交,并对原有提交进行了覆盖,但是内容没有发生变化;
事实上:rebase
的含义为变换基准,git rebase -i commit_id
中的commit_id
所指的提交节点就是新的基准点。该基准点之后的提交都会被git
新创建的,内容一样的新提交所覆盖。rebase
指令之后会详细介绍。
edit参数
该参数也可以达到上述效果,只不过稍微多了几个步骤。这个参数的意思是:停下rebase
进程,编辑添加了该参数的提交,编辑完之后,通过调用git rebase --continue
继续进行rebase;具体如下:
将添加了错误提交信息的提交的pick
参数改为edit
参数:
通过:wq
保存并退出:
可以看到,edit
参数将rebase
操作停了下来。根据提示,可以通过:
git commit --amend
修改完后,通过:wq
保存并退出vim
编辑器。再调用:
git rebase --continue
此时查看test
分支的提交历史,会发现错误的提交信息得到了更正,并且与上reword
参数一样,创建了新的提交,对原有提交进行了覆盖,同样内容也不发生变化:
git rebase -i HEAD~n
通过上述指令也可以进入rebase
交互模式,其中n
表示需要显示的最近n次提交记录。比如通过以下指令,显示test
分支最近的三次提交记录:
git rebase -i HEAD~3
进入rebase
的交互界面之后,后续的操作和结果都与第一种方法一样,这里就不再赘述了。