これがどこかで徹底的に、明白に、そしておそらくすでにそうであるように何度も答えられていたら、私はお詫びします。しかし、少なくとも 1 週間検索しても、私が抱えているこの特定の問題に関する情報を見つけることができませんでした。
簡単にするために、3 人でプロジェクトに取り組んでおり、各人が独自のブランチを持ち、定期的にマスター トランクにマージします。問題は、競合が発生する (チェリー ピックを試みる) か、マスターのすべてのファイルと最後のブランチとマージされた最初の 2 つのブランチが単に上書きされているように見えることです。
私の問題は(うまくいけば)単純です:
マスタートランク
string test1;
string test2;
string test3;
test1 ブランチ
string test1 = "Dan Branch merged";
string test2;
string test3;
test2 ブランチ
string test1;
string test2 = "Dave Branch merged";
string test3;
test3 ブランチ
string test1;
string test2;
string test3 = "Will Branch merged";
3 つのブランチすべてがマージされた場合の望ましい出力:
string test1 = "Dan Branch merged";
string test2 = "Dave Branch merged";
string test3 = "Will Branch merged";
テスト1と2をマージしようとすると、実際に得られるのは次のとおりです。
自動マージに失敗しました。競合を修正してから、結果をコミットします。
<<<<<<< HEAD
+ String test1 = "Dan Branch merged";
+ String test2;
+ String test3;
=======
+ String test1;
+ String test2 = "Dave Branch merged.";
+ String test3;
>>>>>>> test2
私は現在、Windowsでgit-guiを使用しています(最終的にgitに頭を悩ませたときにbash / shell / cliに変更する計画があります)。 git-gui ですが、もちろん物乞いは選択者になることはできません。
物事をシンプルに保つために、リポジトリはサーバーではなくローカル ネットワーク フォルダーにあります。これが実装に影響するかどうかはわかりません (使用法を正しく推測していれば、プッシュとプルは使用されないと思います)
現在、Git は、すべてのマージが手動で行われているため、古いバージョンを保存および参照するための手段に追いやられています。