Git修改commit提交資訊

admin發表於2018-08-06

當進行一次commit提交的時候,可以附帶簡短的資訊說明,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ commit -m "螞蟻部落提交"

在-m命令後面跟著的"螞蟻部落提交"就是commit提交資訊。

提交資訊可以修改,程式碼例項如下:

[Shell] 純文字檢視 複製程式碼
$ git commit --amend -m "c3"

但是上述命令只能修改最後一次commit提交的資訊。

更多內容可以參閱git commit --amend用法詳解一章節。

如果想要修改其他commit提交資訊可以使用如下命令:

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

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

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

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

a:3:{s:3:\"pic\";s:43:\"portal/201808/06/020417qhi6iiacuhcgcgi5.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

下面開始使用git rebase -i命令,程式碼如下:

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

特別說明:

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

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

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

截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/06/020519puq2tr8qcr22cyn1.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

截圖說明:

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

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

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

假如要修改4f66476提交的commit資訊,程式碼如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/06/020541jgmd91z2em84l4mk.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

將pick改為reword(負責修改commit資訊),然後儲存並退出,之後再一次彈出VIM編輯器:

a:3:{s:3:\"pic\";s:43:\"portal/201808/06/020601ra1zbbtpmknsip9p.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

在對應的地方修改,然後退出儲存即可,然後給出如下反饋資訊:

a:3:{s:3:\"pic\";s:43:\"portal/201808/06/020623muyardm2xo8sgzuu.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

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

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

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

a:3:{s:3:\"pic\";s:43:\"portal/201808/06/020740dkei0mziii342hfm.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

一.修改提交資訊的影響:

(1).當前提交的sha-1值改變:

雖然僅僅修改了commit的提交資訊,但是由於sha-1的計算方式決定,它的sha-1也將會被修改。

(2).其後的提交的sha-1值改變:

它後面的commit的sha-1值也會改變,因為後面的commit物件有一個指標是指向前面commit,既然前面commit的sha-1值改變了,那麼這個指標也會發生變化,根據sha-1的計算原則,後面的commit的sha-1值都會改變。

二.取消修改:

如果你還記得在修改之前,最後一次commit提交的sha-1值,應用如下程式碼即可:

[Shell] 純文字檢視 複製程式碼
$ git reset 04a540f --hard

如果忘記sha-1值,那麼可以採用如下程式碼:

[Shell] 純文字檢視 複製程式碼
$ git reset ORIG_HEAD --hard

關於ORIG_HEAD可以參閱Git ORIG_HEAD用法介紹一章節。

相關文章