为什么这种合并会产生冲突

时间:2011-05-02 03:39:01

标签: git

当我运行此命令时:

 git log HEAD..other_branch -- some_file.txt

根本没有输出,我认为some_file.txt中的other_branch没有变化。然而,当我跑git merge other_branch时,我在some_file.txt.

中得到了一大堆冲突

当我跑步时:

git log HEAD...other_branch -- some_file.txt 

我得到了两次提交。修改文件的位置和修改文件的位置合并到HEAD.

我认为因为文件只在一个分支中被更改,所以不存在任何冲突。为什么会有冲突?在我运行git merge之前,有没有办法看到会发生什么冲突(以及为什么)?

2 个答案:

答案 0 :(得分:4)

添加到manojlds的贡献:

非常好。但是接下来应该完成同样的事情呢?

git diff master:some_file.txt someBranch:some_file.txt

这样你就不需要在对缓存

进行区分之前结账

原始答案:

命令

git log HEAD..other_branch -- some_file.txt

相同
git log ^HEAD other_branch -- some_file.txt

这意味着给我一个可以从other_branch到达的所有提交的日志,但是对于some_file.txt,无法从HEAD访问。如果此命令没有输出,则表示some_file.txt在other_branch上没有更改。

另一方面:

git log HEAD...other_branch -- some_file.txt 

是HEAD和other_branch之间的对称差异,即HEAD和other_branch中的提交但两者都没有,并且是合并两个分支时将合并的提交。因此,HEAD上的some_file.txt可能发生了某些事情,导致与other_branch上的版本发生冲突

答案 1 :(得分:1)

要添加@Magnus Skog的答案和您的问题:

  

我认为因为文件是   只在那里的一个分支中改变了   不会有任何冲突。为什么是   有冲突吗?有没有办法看到   什么会在我面前发生冲突(以及为什么)   运行git merge?

在这种情况下,我主要会这样做:

git checkout other_branch some_file.txt

然后做

git diff --cached some_file.txt

查看差异,您可以轻松查看是否出现合并冲突。如果您还想单独“合并”文件,那么现在可以git commit

这是我在查看某些文件中的差异以及合并特定文件时采用的方法