最近、SVN から GIT に切り替えましたが、以前のワークフローの変換に問題があります。ほとんどすべてが機能しますが、今日は奇妙なチェリーピックの競合が発生しました。
競合を解決することはできますが、これがどこから来たのかを知りたいです。私の理解では、この状況では競合が発生するべきではないからです。
設定
私たちのリポジトリには、master
開発するブランチがあります。年に 4 回、新しいバージョンをリリースします。に分岐master
しRelease-x
、これはテスト後に出荷されます。
同時に複数のリリース バージョンを運用しています。バグが見つかった場合は、すべての (サポートされている) リリース ブランチで修正する必要があります。そのため、タグを使用してさまざまなリリースを識別する単一のリリース ブランチは、有効なワークフローではありません。
したがって、現在、次のブランチがあります: master
、Release-15Q1
、Release-15Q2
およびRelease-15Q3
たとえば、でバグの原因となるタイプミスを見つけたとmaster
します。それを修正してcherry-pick
からRelease-15Q1
、Release-15Q2
Release-15Q3
だから、今私が直面している紛争に:
ファイルは、分岐後properties.dat
に で変更されましたmaster
Release-15Q3
Properties.dat ( Release-15Q3
)
serverip=1.1.1.1
serverport=11
name=MyApp
Properties.dat ( master
)
serverip=2.2.2.2
serverport=22
name=BetterName
開発は進みました... すべて順調です。その後、バグを無効にするためにファイルに追加のプロパティを追加する必要があるバグに気付きました。
Properties.dat ( master
)
serverip=2.2.2.2
serverport=22
name=BetterName
+ allowBug=false
この修正コミットは、他の 3 つのブランチにも適用する必要があります。そこで、各ブランチに移動して、cherry-pick コマンドを使用します。
これにより、最初の 3 行で競合が発生しますが、その理由がよくわかりません。
チェリーピッキングでは、その特定のコミットのみを再生すると想定していたので、適切な場所にallowBug=false行を追加するだけです。ブランチをマージしていないので、他の変更が行われたかどうかは問題ではありませんよね?
なぜこれが競合を引き起こしているのですか?これらの他の変更は無視されるべきではありませんか?