当我运行此命令时:
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
之前,有没有办法看到会发生什么冲突(以及为什么)?
答案 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
。
这是我在查看某些文件中的差异以及合并特定文件时采用的方法