2012-07-11 57 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