2013-03-05 92 views
2

我有我的源代码在一个mercurial回购,而主分支已经从mercurial移动到一个git回购。当前的git master分支头和我的mercurial版本有冲突。 git master被创建为新的repo,而不是从原始的mercurial repo派生而来。如何将我的修改与主分支的修改合并?Git合并2个版本没有共同的祖先

如果我创建从主一个新的分支,覆盖源与我善变的来源和与主合并它,Git并不冲突检测(我想是因为我们没有共同的祖先版)

+0

http://stackoverflow.com/questions/14253594/using-git-to-merge-two-directories-with-common-parent-but-different-sha1这可能会有所帮助。 – pktangyue 2013-03-05 02:51:44

回答

2

我不会认为它会。如果你创建一个新的分支从大师然后你其实有一个共同的祖先,而这个共同的祖先其实是掌握自己。这意味着合并结果实际上是您的新分支,因为它是从主服务器快速转发的。

如果您要创建一个没有历史记录的新分支(或者与主数据库没有任何关系),那么您会得到您期望的合并冲突。您可以创建一个新的分支孤儿:

git checkout --orphan new_branch 

而且然后复制你的源代码从善变,你将能够与主合并。任何两个分支之间不相同的文件都将被标记为冲突。

+0

git checkout不会创建新的分支吗?或者你的意思是我应该创建一个分支,然后使用--orphan – hlitz 2013-03-05 17:03:44

+0

'git checkout'会在给出'-b'或'--orphan'标志时创建一个新的分支。 – 2013-03-05 17:06:47

+0

在我的情况下,hmm无法正常工作:“git checkout --orphan tm” 切换到新分支'tm'“git log” 致命错误:错误的缺省修订版本HEAD'“git branch -a master” 遥控器/产地/头部 - >产地/主人 遥控器/产地/主人 – hlitz 2013-03-05 17:16:41

相关问题