2012-01-17 36 views
1

修復較小錯誤的最佳方法,例如在較舊的提交中輸入一個錯字,而不是進行修復它的新提交?我不想用很多「打字錯誤」的提交來搞亂歷史。我還沒有將提交推送給任何人。在git中更改較舊的提交中的一個小錯誤

讓我們說在這個senario中,我想修復1月15日的代碼錯字提交,同時保留其他2個提交。

commit 826da06f085664298164a4bfc9994cad109c59f8 
Author: Me 
Date: Tue Jan 17 18:48:12 2012 +0800 

    feature 3 working 

commit d816dd97a207add63d31958c3ffba84b65681810 
Author: Me 
Date: Tue Jan 16 17:47:29 2012 +0800 

    feature 2 working 

commit 972ded30c20692cb74ae07d0c941c43022c905bd 
Author: Me 
Date: Thu Jan 15 08:48:40 2012 +0800 

    feature 1 working 

回答

1
rebase -i <sha of commit PRIOR to the one you want to change> 

然後選擇其中的commit()你想更改,刪除等

0

我的首選方法是從那個有問題的提交中創建一個新的分支。修復了這個新分支上的問題,並提交。然後將這個新分支合併到原始分支。不知道這是你想要的。

1
git rebase -i HEAD~3 

是你想做些什麼。你是3次提交的作者,如果你沒有推過它,那麼我認爲可以繼續。在任何其他情況下,我會建議不要執行此操作。

this good page for details

2

我用下面的情形。

  1. 修正了一個小的失誤
  2. 提交修復
  3. git的變基-i HEAD^4

這個開放的一個vim編輯器(可能)有以下文字

pick 972ded feature 1 working 
pick d816dd feature 2 working 
pick 826da0 feature 3 working 
pick xxxxxx fix feature 1 

將其更改爲

pick 972ded feature 1 working 
f xxxxxx fix feature 1 
pick d816dd feature 2 working 
pick 826da0 feature 3 working 

請注意,我將「修復功能1」提交移至第二行,並將改爲改爲f。 這告訴git將「特徵1工作」和「修復特徵1」提交合併爲一個提交消息(即「特徵1工作」)。

「功能2工作」和「功能3工作」提交git離開「未觸摸」。 (實際上它應用這個提交到一個新的歷史,所以他們會得到新的ID)