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 认为文件未合并?"。