我正在做一个变基,我希望始终将分支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仅包含 行尾标准化,而不包含新文件或已删除文件。
答案 0 :(得分:1)
简短的回答是,-X
参数对我所说的高级冲突完全没有影响。另请参见"-X theirs" option does not seem to work with certain Git conflicts和What 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”标识未合并、被它们删除的文件。