【学了就忘】Git操作 — 63.rebase应用:修改更早提交的message

通过下面两个git rebase的应用,我们也学习一下git rebase交互模式的使用。

(一)修改更早commit的message(重点)

这个命令非常有用,对提交历史进行变更,非用不可的命令。

1、先来看下历史日志

我的需求是修改第三次的commit的message。

2、查看第三次提交的详细信息

执行git log + commit_ID,会把该对应commit和他之前的commit的详细信息都显示出来。看第一个commit信息,就是我们需要的。

从图中可以看出,分支中第三次提交的message信息是:在temp分支提交temp-test.txt文件

3、修改第三次提交的message。(重点)

需要用到命令:git rebase,变基的操作可以进行交互式操作,需要用到参数-i

这里需要注意一下

  • 我们对temp分支的第三次提交的message进行变更,因为message是作为commit数据结构当中的一个属性,所以如果要对message进行变更,那么该commit的ID号是肯定要做改变的。
  • 其次要变更第三个提交的message信息,这个rebase(变基)中这个基,要选择被变更提交的父亲提交为基准点。(这个很重要)

(1)执行变基操作

执行命令:git rebase -i + 父commit_ID

执行上述命令后,会跳转到一个交互页面上。

接下来详细介绍一下交互页面中的内容:

这个页面的意思是说,你在做变基(rebase)的时候,针对某一个commit进行处理策略。

  • 第一行 pick 4f890b5 在temp分支提交temp-test.txt文件说明:
    pick:意思是挑选,我们可以把pick的位置,换成对应的策略,来重新编辑该提交。
    也就是pick的位置表示对该commit进行怎样的处理,后边表示要处理的是哪个commit。
  • 注释中commands下边就是各种策略(命令)的介绍。
  • 我们这里介绍用到这次用到的命令。(其他的以后在扩展)
    我们现在要用的策略就是reword
    r,reword <commit>=use commit,but edit the commit message
    意思是该提交的历史变更信息是要保留的,但是我需要修改这个提交中的message信息。
    提示:用rreword都可以,r表示简写。

(2)编辑修改提交的策略

因为我们要改变4f890b5提交的message,所以就需要reword命令。

修改4f890b5的策略

我们只修改第三次提交,其他的提交不改变。

然后退出保存(:wq!)即可。

(3)编辑提交内容

上一步操作退出后,还会跳转到一个新的交互页面,如下图:

编辑第一行的mesage的信息。保存退出。

提示:带#号表示备注,在提交的message中是不会出现的。

出现下图,表示修改成功了。

对提示信息说明:

  • Successfully rebased and updated refs/heads/temp.:显示执行成功,其实他完成了两个步骤,前边的rebase帮我们把message处理完毕,后边还把该提交的HEAD指针(commit-id)进行了更新。
  • 其实我们在仔细看一下,第二行的开头detached HEAD ed6984e,说明是分离头指针状态,且ed6984e提交是我们之前没有的提交。
  • 分离头指针状态其实他有些时候是很有用的,就像现在这个变基rebase操作,是离不开分离头指针的,只不过这是一个完整的变基行为,我们无法查看到具体的细节。Git先变成分离头指针状态,把HEAD指针指向了基准点,然后在上边做调整,调整完毕之后提交,把HEAD指针执行最新的提交,如此循环把后边的提交也补充上,就这完成以提交为基准点的变基。

(4)查看版本库中的历史提交日志

通过以上步骤,我们把第三次提交的massage信息修改完成了。

而第三次提交的commit-id也发生了改变,之前是4f890b5,而现在是ed6984e

这里重点说明

使用git rebase 命令进行修改指定提交的操作,实际上是以该指定提交的父提交为基准点,进行的变基操作。

不单单第三次提交的commit-id发生了改变,且之后所有的提交的commit-id都发生了改变。

(5)最后,特别要注意

上边所讲的变基(rebase)的行为,是正在自己的分支上做变更,还没有贡献到团队的共享分支上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章