2016-08-03 148 views
1

在我的回購中,我有一個主分支和一個錯誤修復分支。我做了我的錯誤修正,並將其合併到主。然後,在一個瘋狂的愚蠢的錯誤中,我做了不可思議的事情。在與git commit --amend合併後,我添加了3個字符。我重寫了歷史。然後,令我沮喪的是,它隻影響到master,而不是bugfix,所以如果我運行(在master上)git branch --no-merged我看到bugfix沒有合併。所以,我簽出bugfix,並做出相同的更改,使git diff bugfix master什麼也沒有返回,然後從主控我再次檢查git branch --no-merged,它仍然說bugfix沒有合併。所以,現在我有兩個相同的分支,我想合併它們不是,我不想使用另一個提交。我如何將它們合併,讓git將它們視爲合併,並且git branch --no-merged不會返回bugfix?「合併」兩個相同的分支

+2

撤消合併提交,再次合併,並從那裏開始。我認爲你所走的道路不會有結果(至少沒有你想吃的東西)。 –

+0

即使你做了修改,提交仍然有兩個父母,並且是一個合併提交,所以沒有任何意義,之後bug修復顯示在 - 沒有合併。 – DavidN

+0

@DavidN我不知道它爲什麼發生,我只是列出發生在我身上的事情。我會試着重現它,並讓你知道我是否可以。 – thesecretmaster

回答

1

有時候當你迷路時,最謹慎的做法就是當你沒有迷路的時候,將你的腳步回溯到前一點。在你的情況下,我會撤銷master中的修改合併提交,並在bugfix中核實「修復」提交。然後重做合併而不做任何其他更改。

撤消錯誤提交的修正:

git checkout bugfix  # switch to bugfix 
git reset --hard HEAD~1 # nuke the fix commit 

撤消合併犯主:

git checkout master  # switch to master 
git reset --hard HEAD~1 # nuke the amended merge commit 

現在你可以重做合併:

git merge bugfix 

注意:這個答案假設您還沒有將任何東西推到遙控器上。如果有,那麼您將需要使用git revert來撤銷錯誤提交而不是重寫歷史記錄。