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 --rawと を使用してファイルの履歴のハッシュを見ると、ハッシュの衝突ではないと思いますgit show --raw

4

1 に答える 1

0

最新バージョンの git を入手して、もう一度試してみます。あなたが使っているのは1年以上前のものです。

次に、ファイルの内容が類似しているかどうかを確認します。Git はコンテンツに基づいてファイルの移動を検出し、それを使用してブランチをマージします。

于 2012-07-12T05:39:49.923 に答える