2012-07-11 58 views
0

在Git 1.7.5.4中,当我试图从软件的一个较老的版本分支合并到主人时,我收到了一些非常奇怪的行为。Git合并冲突与无关的文件?

$ git checkout master 
$ git merge 0.1.2.3 
[...] 
Auto-merging ProjectA/src/main/groovy/com/example/package/Something.groovy 
CONFLICT (content): Merge conflict in ProjectA/src/main/groovy/com/example/package/Something.groovy 
[...] 
Automatic merge failed; fix conflicts and then commit the result. 

望着这个文件,我看到很奇怪的东西:

$ cat ProjectA/src/main/groovy/com/example/package/Something.groovy 

<<<<<<< HEAD 
[contents of ProjectA/src/main/groovy/com/example/package/Something.groovy] 
======= 
[contents of ProjectC/src/main/groovy/com/example/something/Different.groovy !!] 
>>>>>>> 0.1.2.3 

Something.groovy文件不会对其他分支存在。主分支上不存在Different.groovy文件。我预料会得到关于该文件不存在的合并冲突警告。我没有想到它在不同的项目中与一个完全不相关的文件错误地相关。

任何想法可能会导致这样的事情?我不认为这是一个哈希碰撞,使用git log --rawgit show --raw来查看文件历史的哈希值。

回答

0

我会抓住最新版本的git并再次尝试。你使用的是一岁以上的。

其次,检查文件内容是否相似。 Git根据内容检测文件的移动并将用它来帮助合并分支。

+0

它们根本不相似。该版本的git是Linux Mint目前的版本,但我会尝试获得更新的版本。 – 2012-07-13 02:30:45