2012-10-14 79 views
1

我正在與一個小項目上的朋友合作,我們使用Git作爲源版本控制。這就是問題的情景:如何在Git中從失敗的合併中恢復

  1. 我開始從版本的工作,並且有幾個本地提交到版本B.
  2. 我的朋友也從A開始,推版C到中央回購。
  3. 我做了'git pull --rebase'並推送了版本B.所以遠程回購就像A-> C-> B。
  4. 與此同時,我的朋友還在研究他推的C版本。當他試圖推出版本D時,他做了一次失敗的合併(我不知道他是怎麼做到的)。結果是,提交D包含從C-> D的改變,但是丟棄了來自A-> B的改變。所以遠程回購看起來像A-> C-> B-> D目前,但版本D刪除C-> B的所有更改

我想知道什麼是最簡單的方法來解決這個問題合併失敗。

+1

你可以用'git的reflog'找出你在哪裏,你開始在合併之前,然後檢查了散列,然後再試一次。你是這個意思嗎? –

+0

每個人都應該閱讀Torvalds的這篇文章:http://lwn.net/Articles/328438/ - 不要每次都同步你的版本庫,而只是在有意義的地方同步它們。 –

回答

0

你朋友也可能做的事情是git push --force,導致A-C-D

一個辦法是讓你再次push --force內容(A-C-B),併爲您的朋友:

  • 結賬他目前的工作之上的tmp分支
  • git fetch origin
  • 重置其master分支到origin/master
  • cherry-pick D from tmp分支回主(可能涉及合併)
  • git push origin