2013-03-06 7 views
35

私のGitのレポは、次のようになります。別のブランチに1つのブランチをマージする方法は2通りのマージですか?マスターに</p> <pre><code> _ branch_a / master/ _ branch_b </code></pre> <p>今、私はbranch_aに分岐_Bをマージしたい、<strong>ない</strong>いずれかの分岐:

だから、私は

git checkout branch_a 
git merge branch_b 

とのgit行って、紛争のカップルを発見しました。

私は、コンソール上で得るものmeldを使用してgit mergetoolを行う

{local}: modified file 
{remote}: modified file 

のみLOCALとREMOTEを表示するウィンドウです。

私が知りたいのです:なぜマスターにあったものを共有ベースは

  1. が示されていませんか?

  2. LOCALとREMOTEの間で、私はどちらを編集するつもりですか?

+7

AをBにマージする場合、正しいコマンドは 'git checkout branch_b git merge branch_a'です。 – iberbeu

+0

gitのバージョンは何ですか?私がmergetoolとしてmeldを使用するとき、それは一般的な基盤の3-wayマージとしてそれを提示します。私はそれが2つのファイルだけを見たことはありませんでしたので、どのファイルを変更する予定があるのか​​分かりません。 – qqx

+0

git version 1.8.1.2 – EMiller

答えて

11

ブランチAをブランチBにマージすると、得られるコンフリクトは両方のブランチの違いから生じ、マスターとの違いにはなりません。祖先

通常ローカルブランチはあなたがにマージあるものでなければならないとリモートあなたがしたいものであるので、AまたはBでgit diffを実行すると、あなたにmastereとただし差分を与えますマージ。とにかくあなたのコンピュータにはファイルのコピーが1つしかありませんので、ファイルを1つだけ変更してください。

+0

技術的には、 'master'ブランチがそのマージに関与しないことは事実です。しかし、その場合のマスターが指摘するコミットは、それが共通の祖先であるためです。 – qqx

+0

ブランチ(aまたはb)の差分は、祖先(この場合はマスタ)との比較から取られますが、AをBにマージすると、矛盾はマスターではなくそれらのブランチによって与えられます。それは私が意味していたものです。私は自分の答えを編集した – iberbeu