複数 - git 別ブランチ 取り込み



Git-diff3競合スタイル-一時的なマージブランチ (1)

gitの「再帰的マージ(recursive merge)」メソッドのために、ここで何を持っているか( Temporary merge branch 1と2と同じです)

            o->branch1 = "Temporary merge branch 1";
            o->branch2 = "Temporary merge branch 2";
            merge_recursive(o, merged_common_ancestors, iter->item,
                            NULL, &merged_common_ancestors);

merge-recursive.c 、1940年頃)。 Gitは、コミットグラフにマージベースの候補が複数ある場合、再帰的なマージを行います(詳細はこのブログ記事を参照してください)。 gitは内部的な再帰的なマージを行い、マージ競合を起こした後、外側のマージを行い、別のマージ競合を打ちました。 あなたが見ているのは、内側の紛争が「ベース」バージョンとして示されている外側のマージコンフリクト( ourstheirs )です。

他のマージ戦略を選択するか、代替差分アルゴリズム( patienceminimalhistogramアルゴリズムとデフォルトのmyers )を使用すると、より良い結果が得られる場合があります。 または、 diff3スタイルを少し無効にして、内側のマージが表示されないようにすることもできます

私はmerge.conflictStylediff3設定してマージを行っています。 通常、これは4つの文字セットで区切られた3つのセクションを挿入します。

MeritのためGit Documentationは、これらのシンボルが単純なケースで意味するものを明確に説明しています(後述)。

通常のdiff3:

Here are lines that are either unchanged from the common ancestor, or cleanly resolved because only one side changed.
<<<<<<< yours:sample.txt
Conflict resolution is hard;
let's go shopping.
|||||||
Conflict resolution is hard.
=======
Git makes conflict resolution easy.
>>>>>>> theirs:sample.txt
And here is another line that is cleanly resolved or unmodified.

しかし、私は数多くの余分な行(以下を参照)でより複雑な結果を得ています。 私は、私が現在合併しているコミットの先祖で数多くの合併を行ったという事実とは関係がありますが、余分な行が何を意味するのか分かりません。 私はまた、この動作のためのドキュメントを見つけることができないようです。

ここに私が得たものがあります(もちろん、コードのアイデンティティを保護するために編集されています)。

(私がマージしようとしているコミットのコードには、コンフリクトマーカはありませんので、それは答えではありません)。

<<<<<<< ours
||||||| base
<<<<<<< Temporary merge branch 1
||||||| merged common ancestors
        if (sendRedirect(result))
            return new Result("redirect");

=======

        if ( result.getId() != null )
        {   
            object = new SomeObject(searchResult.getId()) ;
        }

        if (sendRedirect(result)){
            return new Result("redirect");
        }

>>>>>>> Temporary merge branch 2
=======

        if ( result.getId() != null )
        {   
            object = new SomeObject(searchResult.getId()) ;
        }

>>>>>>> theirs

私はこの質問が同じことを尋ねていると信じていますが、答えはdiff3と何か関係があるということ以外は何も説明していません。質問者はすでにタイトルに馴染み深いものとして示しています。 私はその質問を2回編集しようとしましたが、却下されましたので、もう一度質問しています。





diff3