首页 > 解决方案 > 在变基期间解决所有“由他们更改”或“由他们删除”

问题描述

我正在做一个变基,我想总是从分支 A 中获取冲突文件。

在分支 A

git rebase -X theirs branchQ

(根据Is there a "theirs" version of "git merge -s ours"?为特定文件选择 Git 合并策略("ours"、"mine"、"theirs"):"theirs" 应表示"使用版本来自 A"。在 rebase 中,他们和我们的含义在合并方面是相反的)

但是,对于已修改和删除的文件,我仍然会遇到冲突。我想一直使用 A 的内容。

git status

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add/rm <file>..." as appropriate to mark resolution)

        deleted by them: A/XB.cs
        deleted by them: A/YB.cs
        deleted by them: B/XD.cs
        deleted by them: B/YD.cs

还有很多。

我可以通过git rm A/XB.csetc 来解决这个问题,但我如何接受​​有这些删除(以及来自分支 A 的所有其他更改)? (这是一个 28 阶段的变基,所以我正在寻找自动化)

对于分支 A 和 branchQ 的公共父级,branchQ包含行尾规范化,而不包含新文件或已删除文件。

标签: gitrebase

解决方案


简短的回答是,-X争论对我所说的高级冲突完全没有影响。请参阅“-X theirs”选项似乎不适用于某些 Git 冲突以及导致 git 合并冲突的原因和案例是什么?

我没有可以为您执行此操作的预设脚本,但可以尝试:

git ls-files --stage

请注意,“被他们删除”的文件将作为条目存在于暂存槽 1 和 2 中,但不存在于槽 3 中。这些是传递git rm给以告诉 Git 删除阶段 1 和 2 条目的名称。

有关合并如何使用索引中每个文件条目允许的四个暂存槽的描述,请参阅合并期间 git index 的内容如何演变(以及合并失败后索引中的内容)?


推荐阅读