git 如何找出冲突中的未合并路径



git 如何获取未合并路径的列表?

我对 git 的理解是,当合并时,它会将更改合并到文件中,然后将其添加到索引中。如果发生合并冲突,则文件不会添加到索引中,而是保留在工作树中带有冲突标记。如果我运行git status它会显示冲突文件的unmerged paths

git 如何获取这些文件的列表?如果我为标记仍然存在的冲突文件运行git add,它将不再显示为冲突,所以也许标记不是标识符?

如果发生合并冲突,则不会将文件添加到索引中,而是保留在带有冲突标记的工作树中。

它在索引中:见git ls-files

对于未合并的路径,索引最多记录三个这样的对,而不是记录单个模式/SHA-1 对;一个来自阶段 1 的树 O,阶段 2 的 A 和阶段 3 的 B。

git read-tree详细介绍了 2 种方式合并:

每个"索引"条目都有两位的"阶段"状态。
阶段 0 是正常的阶段,也是您在任何类型的正常使用中看到的唯一阶段。

但是,当您使用三棵树执行 git 读取树时,"阶段"从 1 开始。

这意味着你可以做

git read-tree -m <tree1> <tree2> <tree3>

你最终会得到一个索引,其中包含"stage1"中的所有<tree1>条目,"stage2"中的所有<tree2>条目和"stage3"中的所有<tree3>条目。
当将另一个分支合并到当前分支中时,我们使用公共祖先树作为<tree1>,当前分支头作为<tree2>,另一个分支头作为<tree3>

另请参阅"如何强制 git 认为文件未合并?"。

最新更新