当我尝试从我们软件的一个旧版本分支合并到主服务器时,我在Git 1.7.5.4中遇到了一些非常奇怪的行为。
$ 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 --raw
和git show --raw
查看文件历史记录的哈希值。
答案 0 :(得分:0)
我会抓住最新版本的git并再试一次。你正在使用的那个已经超过一年了。
其次,检查文件内容是否相似。 Git根据内容检测文件的移动,并使用它来帮助合并分支。