1

例えばこんな経歴の私。

A -> B -> C -> F -> G ---------- feature
           \
            D -> E  -------- master

履歴全体で、最初の行、たとえば「sometext」を含むファイルa.txt があります。コミットGで、「sometext」を削除し、最初の行を空白のままにすることにしました。次に、これら 2 つのブランチをマージします。最初の行が空白の新しいコミットが形成されます。したがって、Eには「sometext」行が含まれ、Gには含まれません。したがって、これはマージされているブランチ間の違いです。git はマージコミットに何を含めるかをどのように決定しますか? Eの後にGを作ったからですか?

4

1 に答える 1

3

この場合、C両方のブランチの共通の祖先を特定し、各ブランチC..GC..E.

C..Eはラインに触れていませんが、触れているのでC..GGのおつりがとられます。両方のブランチが同じ行を異なる方法で変更した場合、競合を手動で解決するように求められます。

これは3 方向のマージです。議論についてはこの古い質問を参照してください。その他のマージ オプションについては、ドキュメントのマージ戦略セクションを参照してください。

于 2013-11-04T16:34:18.023 に答える