2016-09-20 40 views
1

我對所有合併和重新定位命令感到困惑,並且遇到了一些錯誤。鑑於項目只爲我自己。我的問題是以下幾點:獨立HEAD狀態下的Git rebase - 如果我想更正歷史記錄中的文件並替換最新提交中的文件,該怎麼辦

我的主人提交,產地/ master分支(從最新的,所有公開可見):現在

Commit 4 - test_data.txt commited, same file as in commit 2 
Commit 3 - revert of commit 2, code.txt bug found, state of commit 1 
Commit 2 - code.txt test_data.txt changed 
Commit 1 - Everything fine 

,與給定的歷史,我發現在code.txt的bug。 I git checkout commit 2,我想用更正後的code.txt和原始test_data.txt(包含在提交2和提交4中)進行提交5。

我的問題: 有沒有什麼我在給定的歷史/日誌中做錯了什麼? 現在我該怎麼做?我檢查了提交2,修正了錯誤並作了一個提交,但不能推入主分支(提交5來自分離的HEAD)。即使我合併了提交5和提交4(成功),我也無法將其付諸實施。但我的主要問題是,應該如何處理這種情況?

謝謝

+0

哪些提交是公開可見的?你用'git revert'恢復了嗎? –

+0

我只用我自己。所有提交都是公開的。只有描述的變化僅在本地進行 – MKPC

回答

1

因爲你已經被推到提交一個公開的存儲庫的主分支,那麼它是不明智改寫歷史。您應該在4之上做出提交5修正,並讓2-4繼續存在歷史上的錯誤。

然而,要回答你的問題:

結帳分支的頂端,做一個互動變基。

git rebase -i <commit 1> 

變化pickedit上提交2.進行更改,然後繼續。

git rebase --continue 

現在歷史已被重寫,您將需要強制推送分支。因爲這些詭計,其他人將不得不強制更新。

git fetch origin 
git reset --hard origin/master 
相關問題