【问题标题】:How to rebase in git, forcing 'theirs' for all conflicts如何在 git 中变基,强制“他们的”处理所有冲突
【发布时间】:2014-10-16 10:55:44
【问题描述】:

我正在尝试将分支 A 重新定位到一个相当远的分支 B。 我并不真正关心在 B 中所做的更改,重要的是 B 的历史记录保持不变,并且 rebase 的最终签出结果(分支 A',其中 B 将成为祖先)看起来与 A 完全一样。

我尝试的是

git rebase B -s recursive -X theirs

这似乎可以自动解决很多冲突,但不幸的是不是全部。 我真的很想避免手动处理所有冲突,因为中间有很多提交,而且解决方案总是微不足道的。

有没有实现这个的git命令?

【问题讨论】:

    标签: git rebase


    【解决方案1】:

    我不确定这里是否适合使用变基。如果您基本上想忽略 B 所做的任何事情,但将其合并到时间线中,那么撤消 B 的更改的重点在哪里?您不能在逐个提交的基础上执行此操作(这是变基所做的),因为每个提交最终都会为空。一个可能的解决方案是仅还原 B 引入的任何内容并以此为基础。

    假设历史是

    ---X---o---A
        \
         o---o---B
    

    创建恢复 B 自在 X 分支后所做的任何事情的提交:

    git revert A..B
    # same as git revert X..B
    

    导致

    ---X---o---A
        \
         o---o---B---B'
    

    其中 B' 等价于 X。现在是变基

    git rebase B' A
    

    应该没有任何冲突导致线性历史

    ---X               o---A'
        \             /
         o---o---B---B'
    

    【讨论】:

      【解决方案2】:

      当你在每个有冲突的步骤中,你可以这样做

      git checkout --ours [filename optionally]
      

      (反直觉,我知道!Check this writeup for more info

      然后照常跟进

      git rebase --continue
      

      【讨论】:

      • 谢谢。但是,恐怕这不是我想要的。首先,我很确定我需要他们的(我已经考虑到他们实际上是颠倒的)。请注意,我想保留 A 的更改!更重要的是,我试图避免的是必须逐步解决所有冲突。他们每个人都有一个微不足道的解决方案,所以应该可以自动化这个过程!
      • 我遇到了完全相同的问题。根据我的(有限的,新的使用变基)的理解,我希望“变基 --Xtheirs”(是的,与您对合并所做的相反)不需要任何手动解决方案。我对这意味着什么的理解是,如果文件有冲突的编辑,请从您启动 rebase 时所在的分支中选择版本。正如您所说,它确实减少了必须手动解决的冲突数量。但为什么它需要any 手动解析呢?您所做的就是“结帐——他们的路径;添加路径”。这不是 -Xtheirs 应该自动做的吗??
      • 嗨@sootsnoot 这可能会帮助stackoverflow.com/questions/2945344/…
      • @Slomojo - 实际上我看过那篇文章,但你对它的引用让我再次阅读它,并看到我第一次错过的东西:“树冲突需要手动解决。你需要运行 git rebase -Xtheirs --continue(重复 -X)“。所以现在我明白预期的冲突是树(不是内容)。当我继续变基时,我仍然看到内容冲突的原因是我没有在每个“git rebase --continue”上重复“-Xtheirs”选项。我只是假设自从我使用“-Xtheirs”开始变基后,继续它会使用相同的选项。非常感谢!
      • 对,对 git 来说这是一种更安全的方法。树冲突可以通过脚本方法自动解决,如果需要,一切都可以在之后重置。
      猜你喜欢
      • 2012-03-18
      • 2017-07-14
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 2014-04-27
      • 2012-06-29
      相关资源
      最近更新 更多