3

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

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

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

4

1 回答 1

3

如果发生合并冲突,则不会将文件添加到索引中,并使用冲突标记留在工作树中。

它在索引中:请参阅git ls-files

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

git read-tree详细说明 2 路合并:

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

但是,当您使用三棵树执行 git read-tree 时,“阶段”从 1 开始。

这意味着你可以做

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

您最终将得到一个索引,其中包含<tree1>“”中的所有条目、“ stage1”中的所有<tree2>条目以及“ stage2”中的所有<tree3>条目stage3
在将另一个分支合并到当前分支时,我们使用共同祖先树为<tree1>,当前分支头为<tree2>,另一个分支头为<tree3>

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

于 2015-02-28T10:38:12.933 回答