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

时间:2015-02-28 10:33:37

标签: git

我对git的理解是,当合并它时,将更改合并到一个文件中,然后将其添加到索引中。如果发生合并冲突,则不会在索引中添加文件,并将其留在具有冲突标记的工作树中。如果我运行git status,它会将unmerged paths显示为冲突中的文件。 git如何获取这些文件的列表?如果我对仍然存在标记的冲突文件运行git add,它将不再显示为冲突,因此标记可能不是标识符。

1 个答案:

答案 0 :(得分:2)

  

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

它在索引中:见git ls-files

  

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

git read-tree详细介绍了2路合并:

  

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

     

但是,当你用三棵树做git read-tree时,“stage”从1开始。

     

这意味着您可以

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

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

另请参阅“How do I force git to think a file is unmerged?”。