Git插入新的commit

admin發表於2018-08-03

實際應用中,可能需要在指定的提交之間插入新的提交。

首先看一下當前的提交歷史,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git log --oneline

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/03/004114biel7jexf0xjxdaj.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

總共有五個提交記錄,按照提交的先後順序從下向上排列,先提交的在下面。

下面就以在c3和C4之間插入一個新的提交為例子,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git rebase -i b0aa963

特別說明:

(1).b0aa963用來確定commit範圍,表示從此提交開始到當前的提交。

(2).並不包括b0aa963提交。

執行此命令後,彈出VIM編輯器,關於編輯器的基本操作參閱git Vim編輯器輸入內容、儲存和退出操一章節。

截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/03/004236r93lddfdgflddugd.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

截圖說明:

(1).頂部的commit提交排列順序與git log排列相反,最先提交的在最上面。

(2).前面的pick表示保留此次commit提交不做修改。

(3).底部紅框給出所有可用的命令。

將4f66476提交前面的pick修改為edit,那麼當Rebase執行到這一行的時候會停下來:

a:3:{s:3:\"pic\";s:43:\"portal/201808/03/004300gq4gc9rrj89ldd4v.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

儲存並退出,這時候HEAD指標指向4f66476處:

a:3:{s:3:\"pic\";s:43:\"portal/201808/03/004325yexudxc92oz5cn15.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

這時候插入我們想要的commit提交即可:

[Shell] 純文字檢視 複製程式碼
$ touch newText.txt

在工作區新增一個newText.txt檔案。

[Shell] 純文字檢視 複製程式碼
$ git add newText.txt

將新增檔案加入到暫存區。

[Shell] 純文字檢視 複製程式碼
$ git commit -m "add newText.txt"

建立一個新的commit提交。現在仍處於Rebase狀態,所以要讓它繼續執行完畢,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git rebase --continue

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/03/004450itg3rpl3ev119rtu.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

現在檢視一下提交歷史,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git log --oneline

程式碼執行效果截圖:

a:3:{s:3:\"pic\";s:43:\"portal/201808/03/004524doolvoolo6mjc18o.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

新的commit提交已經新增到c3和c4之間。

相關文章