有没有办法说'对于所有剩余的合并冲突',选择'我们的'作为合并冲突解决方案? 在我的情况下,“我们的”也是删除,而不是编辑。
我正在使用Git Extensions,只需要一点命令行。 当我进行合并时,我会经历一系列复杂的过程以解决合并问题。 对于一个进程,总会有一组文件在合并中会发生冲突,因为在我的分支上,我正在删除它们。
通常,我运行合并,看到我有冲突,然后从我的存储库中删除特定文件,同时还合适地合并一些其他冲突的文件。
然后,当我确定我的本地文件系统是正确的时,我已经进入Git Extensions,并在每个合并冲突的文件上选择合并,并选择“我们的”(已删除)...逐个。 ...(Git Extensions不允许我多选)。 有很多文件...所以我正在寻找一种方法,我可以基本上做一个批量'合并 - >我完成其他合并后,我们所有剩余的合并冲突。
答案 0 :(得分:0)
我不知道如何在GUI中执行此操作,但在命令行上:
git checkout HEAD -- path1 path2 path3 path4 ...
(采用"我们的"版本)或:
git checkout MERGE_HEAD -- path1 path2 path3 path4 ...
(以"他们的"版本)。
如果"我们的"版本是删除(如在您的描述中),只是:
git rm path1 path2 ...
使用&#34设置索引;解决方法是删除文件"。
要添加的 修改(在两条评论之后):git checkout --ours
和git checkout --theirs
也可用于代替git checkout HEAD
和git checkout MERGE_HEAD
。差异(有一个)是微妙的:当您处于冲突合并的中间时,索引包含每个 path
的暂存槽1,2和/或3中的条目有冲突的。对于未冲突的路径,索引只有一个阶段为零的条目。使用--ours
或--theirs
签出提取暂存条目,同时从HEAD
或MERGE_HEAD
签出可从指定的中提取文件提交(更准确地说,来自与提交相关联的树)。
第1阶段条目是合并基础,第2阶段是--ours
,第3阶段是--theirs
。如果冲突是修改,则使用所有三个临时插槽。如果冲突是delete-vs-modify,则正在使用暂存插槽1,但其中一个插槽未使用。如果冲突是create-vs-create,则插槽1为空,而插槽2和3将填充。
执行git rm
或git checkout
清除冲突暂存槽并使用已解析的结果填充正常的stage-0条目。只有当没有冲突的阶段时,Git才允许最后的合并提交(git ls-files --stage
只显示阶段0)。
讨厌图形用户界面的众多原因之一是他们可能会拒绝重新检查索引,认为他们知道什么是最好的(他们从来没有这样做)。如果您是这样的,它可能会忽略您所做的所有CLI解析,并要求每个解决方案都通过GUI本身。