【问题标题】:git merge recursive theirs, how does it work?git merge recursive theirs,它是如何工作的?
【发布时间】:2010-02-15 18:44:40
【问题描述】:

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

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

现在我认为我需要的是

git merge <branch> -s recursive theirs <commit>

因为我想合并,当发生合并冲突时,应该强制使用 B 的解决方案。但我无法让它工作。它总是告诉我fatal: 'theirs' does not point to a commit

我找到了hererecursive theirs

有谁知道我做错了什么?

【问题讨论】:

标签: git merge


【解决方案1】:

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

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

还要确保您的版本支持-Xtheirs,这是一个相当新的功能(?)

【讨论】:

  • 确实是错误的 git 版本,现在有了新版本就可以了.. 只是它没有我想象的那么好,我得到了所有的合并冲突,但它们都不包含任何冲突:s
  • 这个答案似乎错过了合并中包含的分支? git merge -s recursive -Xtheirs &lt;branch&gt;
【解决方案2】:

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

我认为您将无法指定与您想要的完全一样的策略。有一种策略叫做“我们的”,它与您想要的相反。

在这种情况下使用的通常模式是合并或变基到“B”存储库。从“A”存储库的工作副本中,如果可能的话,你会做一个变基(如果你已经与其他开发人员共享了 git 存储库,这可能是不可能的)。 rebase 本质上会将 A 存储库回滚到两个存储库中的共同提交,应用“B”提交,然后在顶部应用“A”提交。您将在此过程中解决任何合并冲突。

一旦您经历了合并或变基到“B”存储库的痛苦,未来的合并将不那么痛苦。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2017-12-05
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2018-10-25
    • 2018-09-05
    • 2012-11-09
    相关资源
    最近更新 更多