我不知道如何在 GUI 中执行此操作,但在命令行中:
git checkout HEAD -- path1 path2 path3 path4 ...
(采用“我们的”版本)或:
git checkout MERGE_HEAD -- path1 path2 path3 path4 ...
(采用“他们的”版本)。
如果“我们的”版本是删除(如您的描述),只需:
git rm path1 path2 ...
使用“解决方法是删除文件”设置索引。
编辑(在两条评论后)添加:git checkout --ours
andgit checkout --theirs
也可以用来代替git checkout HEAD
and git checkout MERGE_HEAD
。区别(有一个)是微妙的:当您处于冲突合并的中间时,索引包含暂存槽 1、2 和/或 3path
中存在冲突的每个条目。对于不冲突的路径,索引只有一个零阶段条目。签出--ours
或--theirs
提取暂存条目,同时从指定的提交(更准确地说,从与提交关联的树)签出HEAD
或提取文件。MERGE_HEAD
第 1 阶段条目是合并基础,第 2 阶段是--ours
,第 3 阶段是--theirs
。如果冲突与修改有关,则使用所有三个暂存槽。如果冲突是 delete-vs-modify,则暂存槽 1 正在使用,但其余槽之一未使用。如果冲突是 create-vs-create,则插槽 1 为空,而插槽 2 和 3 已填充。
执行git rm
orgit checkout
清除冲突暂存槽并使用已解决的结果填充正常的 stage-0 条目。Git 仅在没有剩余阶段冲突时才允许最终合并提交(仅git ls-files --stage
显示阶段 0)。
讨厌 GUI 的众多原因之一是他们可能拒绝重新检查索引,认为他们知道什么是最好的(而且他们从来不这样做)。如果您是这样,它可能会忽略您所做的所有 CLI 解析,并要求每个解析都通过 GUI 本身。