git是如何工作的?

git是如何工作的?,git,merge,Git,Merge,我有点问题。我们有自己的CMS,它使用git进行协作和版本控制等 现在我有两个git存储库A和B,A是一个项目,B是CMS本身。现在我想让B进入A,但是当我这样做的时候,我得到了很多合并冲突,解决冲突的方法总是使用B的东西 现在我想我需要的是 git merge <branch> -s recursive theirs <commit> git merge-s递归 因为我想合并,当出现合并冲突时,应该强制使用B的解决方案。但我无法让它工作。它总是告诉我致命:“他们的”

我有点问题。我们有自己的CMS,它使用git进行协作和版本控制等

现在我有两个git存储库A和B,A是一个项目,B是CMS本身。现在我想让B进入A,但是当我这样做的时候,我得到了很多合并冲突,解决冲突的方法总是使用B的东西

现在我想我需要的是

git merge <branch> -s recursive theirs <commit>
git merge-s递归
因为我想合并,当出现合并冲突时,应该强制使用B的解决方案。但我无法让它工作。它总是告诉我致命:“他们的”不指向提交

我找到的


有人知道我做错了什么吗?

我认为它失败的原因是您指定了“递归他们的”作为策略。“递归”是一种策略,当您在它后面加上空格时,“他们的”被解释为git需要将您的工作副本与之合并的东西(例如,另一个分支或refspec)

我认为你将无法指定一个完全符合你想要的战略。有一种叫做“我们的”策略,它与你想要的恰恰相反

在这种情况下,通常使用的模式是合并或重新设置到“B”存储库的基础。在“A”存储库的工作副本中,如果可能的话,您可以进行重新基础(如果您已经与其他开发人员共享git回购协议,那么这可能是不可能的)。基本上,重基将A存储库回滚到两个存储库中的公共提交,应用“B”提交,然后在顶部应用“A”提交。在此过程中,您将解决任何合并冲突


一旦您经历了合并或重新设置到“B”存储库的痛苦,以后的合并将不会那么痛苦。

您必须使用此表单传递合并策略选项:

git merge -s recursive -Xtheirs # short options
git merge --strategy recursive --strategy-option theirs # long options

另外,请确保您的版本支持
-x他们的
,这是一个非常新的功能(?)

它确实是错误的git版本,现在使用新版本它就可以工作了。。只是它没有我想象的那么好,我得到了所有的合并冲突,但没有一个包含任何冲突:这个答案似乎忽略了合并中包含的分支
git merge-s recursive-x继承人
可能的重复