2012-10-14 57 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