Git刪除指定commit

admin發表於2018-08-03

本章節介紹一下如何刪除指定的commit提交,首先看一下當前的提交歷史記錄。

程式碼例項如下:

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

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

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

以刪除c5提交為例,程式碼如下:

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

特別說明:b0aa963用來確定commit範圍,表示從此提交開始到當前的提交(不包括b0aa963提交)。

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

截圖如下:

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

截圖說明:

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

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

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

刪除操作很簡單,只要在VIM編輯器中將對應行前面將pick替換為drop:

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

甚至直接手動刪除都可以,最後儲存退出。

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

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

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

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

二.調整影響:

無論是調整commit順序或者刪除commit,都有可能產生衝突或者錯誤。

比如,後面的提交對前面的他比較有依賴性,而刪除前面的提交,則勢必會出現問題,就好比穿越時空來到父母戀愛之時,這時候如果熱戀中的父母分手,那自己又會從哪裡來呢。

相關文章