0

当尝试从我们软件的一个较旧版本分支合并到主版本时,我在 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文件不再存在于 master 分支上。我本来希望收到关于文件不存在的合并冲突警告。我没想到它会错误地与另一个项目中完全不相关的文件相关联。

知道什么会导致这样的事情吗?我不认为这是哈希冲突,使用git log --rawand查看文件历史的哈希值git show --raw

4

1 回答 1

0

我会获取最新版本的 git 并再次尝试。你用的那个已经一岁多了。

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

于 2012-07-12T05:39:49.923 回答