ソフトウェアの古いリリース ブランチからマスターにマージしようとすると、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 --raw
と を使用してファイルの履歴のハッシュを見ると、ハッシュの衝突ではないと思いますgit show --raw
。