Master ブランチと Work ブランチがあります。私は Work ブランチで作業しており、チームは Master ブランチを更新します。
作業ブランチ: 1000 <--- 1001 <--- 1002
マスターブランチ: 1000
Work ブランチを Master ブランチにマージし、作業を進めます。
マスターブランチ: 1000 <--- 1001 <--- 1002 <--- 1003 <--- 1004
Work ブランチは、Master ブランチを Work ブランチにマージしたいと考えています。1003 と 1004 のコミットでファイル a.cpp に何らかの変更があるとします。
Work ブランチの a.cpp は、Master ブランチのコミット 1004 の最新バージョンの a.cpp で自動的に更新されると思います。
しかし、gitはそうではありません! a.cpp の競合を解決するよう求めます。
両方追加: a.cpp
しかし、Work ブランチの a.cpp と Master ブランチの a.cpp を比較しました。Work ブランチの a.cpp は、Master ブランチ (コミット 1002) の a.cpp の祖先の 1 つです。
その理由と簡単に解決できる方法を教えてください。
[更新 1] 申し訳ありませんが、状況を単純化しすぎていると思います。実際、Work ブランチがマスター ブランチにマージされる前に、いくつかのコミットがマスター ブランチにありました。
作業ブランチ: 1000 <--- 1001 <--- 1002
マスターブランチは次のようになります: 1000 <-- 2001 <-- 2002
Work ブランチが Master ブランチにマージされた後、
マスター ブランチ: 1000 <--- マージ (1002、2002) <--- 2003 <--- 2004
ここで、Master ブランチを Work ブランチにマージして戻します。このマージには競合がないと仮定します。記録の順序は次のようになっているため: a.cpp のマスター コード、a.cpp のワーク コード、a.cpp のマスター コード、ワークはマスターから a.cpp を取得します。
[更新 2] 競合の警告が表示されることを理解しました。Git は、ファイルの記録順序に従いません。コミットの年代順にのみ従います。