我正在做一个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的版本”。在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.cs
等解决这个问题,但是如何接受所有这些删除(以及分支A的所有其他更改)? (这是一个28阶段的反思,所以我在寻找自动化)
对于分支A和branchQ的公共父,branchQ仅包含行结束标准化,而不包含新文件或已删除文件。
简短的回答是,-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阶段条目的名称。
有关merge如何使用索引中每个文件条目允许的四个临时插槽的说明,请参阅How do contents of git index evolve during a merge (and what's in the index after a failed merge)?