Git を使用していくつかの matlab コードを追跡しています。おもちゃの例が問題を最もよく示しています。これまでのプロジェクトはこんな感じです。
C
/
A--
\
B
Aの中身はx=5
行が次のように変更されたコミット C を作成します。x=6
次に、コミット B を作成します。ここで、コンテンツは次のようになります。
if flag==1
x=5
end
プロジェクトの目標を次のようにマージしようとすると
C
/ \
A-- D
\ /
B
D のマージ結果では、メイン行が両方で変更されているため、競合が発生します (B ではインデントが追加され、C では 5 が 6 に変更されています)。
マージ結果を得るために、あるブランチからのインデントの変更と別のブランチからのコンテンツの変更を統合するためのベスト プラクティスの方法はありますか?
https://stackoverflow.com/a/5262473/288545で1つの戦略について読んだことがありますが、それは競合を回避しますが、コンテンツの変更を優先してインデントを破棄します(これは改善ですが、それでもコードを読みにくくするため)。
コードを書くときにインデントを変更せずに、それを吸い上げることができると思います。これにより読みにくくなりますが、matlab では大した問題ではありません。しかし、Python ではインデントが非常に重要です。後で制御構造の内部に変更するコードの大きなブロックがある場合、これはさらに醜くなります。そのため、差分が多くの行に触れ、マージの競合が大きな頭痛の種になります。
間隔の変更とコンテンツの変更を別々に処理し、それらを統合するマージ戦略はありますか? マージの結果を
if flag==1
x=6
end