2011-05-02 74 views
6

当我运行此命令:为什么会出现这种合并产生冲突

git log HEAD..other_branch -- some_file.txt 

有没有输出,我认为meants,有在other_branch没有改变some_file.txt。然而,当我运行git merge other_branch我得到的冲突整体转换在some_file.txt.

当我运行:

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

我得到两次提交。其中一个文件被修改,另一个修改后的分支被合并到HEAD.

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

回答

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可达的所有提交日志,但不能从HEAD for some_file.txt到达。如果这个命令没有输出,这意味着some_file.txt在other_branch上根本没有改变。

在另一方面:

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

是HEAD和other_branch之间的对称差,即在头和other_branch但不是在两者,都将被合并,你当提交的提交合并这两个分支。因此,一些可能已经发生some_file.txt头部,导致与other_branch

+0

谢谢。我想我很困惑(显然),为什么只有在HEAD中发生的变化会在other_branch中合并时产生冲突。 other_branch没有任何变化,所以不应该有一个地方在两个分支发生改变发生产品冲突。 – 2011-05-02 22:37:48

+0

如果添加-p,日志会说明什么?合并冲突是什么样的? – ralphtheninja 2011-05-02 22:52:17

1

的版本冲突增加@Magnus Skog的答案,你的问题:

我以为,因为该文件是 只在一个分支改变,那里 不会有任何冲突。为什么 存在冲突?有没有办法看到 什么会冲突(以及为什么)之前我 运行git merge?

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

git checkout other_branch some_file.txt 

然后做

git diff --cached some_file.txt 

看到比较和你可以很容易地看到,如果你得到合并冲突。如果您还想单独“合并”文件,现在可以使用git commit

这是我在某些文件中发现差异并合并特定文件时所采用的方法

+0

+1很酷。看到我编辑的答案。干杯 – ralphtheninja 2011-05-02 22:58:43

相关问题