解决在重置基准期间所有“由他们更改”或“由他们删除”的情况

时间:2019-02-16 08:36:22

标签: git rebase

我正在做一个变基,我希望始终将分支A的冲突文件保持原样。

在分行A

git rebase -X theirs branchQ

(根据Is there a "theirs" version of "git merge -s ours"?Choose Git merge strategy for specific files ("ours", "mine", "theirs")的说法:“它们的”应表示“使用A的版本。在重新设定基准时,它们和我们的含义在合并中是相反的)

但是,对于修改和删除的文件,我仍然会遇到冲突。我想一直把内容放在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.cs等来解决此问题,但是我如何接受所有这些删除操作(以及分支A的所有其他更改)? (这是28个阶段的基准,所以我正在寻找自动化)

关于分支A和branchQ的公共父级,branchQ仅包含 行尾标准化,而不包含新文件或已删除文件。

2 个答案:

答案 0 :(得分:1)

简短的回答是,-X参数对我所说的高级冲突完全没有影响。另请参见"-X theirs" option does not seem to work with certain Git conflictsWhat are the reasons and cases that cause git merge conflicts?

我没有可以帮您完成此任务的固定脚本,但请尝试以下操作:

git ls-files --stage

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

有关合并如何使用索引中每个文件条目所允许的四个暂存槽的描述,请参见How do contents of git index evolve during a merge (and what's in the index after a failed merge)?

答案 1 :(得分:0)

我遇到了同样的问题,在 Linux 上发现我可以使用没有空格的文件名:

git status --short | grep "^UD"| cut -d " " -f 2|xargs git add

状态“UD”标识未合并、被它们删除的文件。