【學了就忘】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)的行爲,是正在自己的分支上做變更,還沒有貢獻到團隊的共享分支上。

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