2016-08-08 6 views
2

Intellijを使用していますが、リモートブランチBからブランチAに最新の変更を加えたいと考えています。ブランチAはマスターブランチです。Gitのフェッチとマージがスキップされて競合が発生する

ブランチAと競合しているファイルを持つブランチBをフェッチしてマージした後、私はその競合にどう対処するかを私に尋ねず、すべての競合に対して自動的に "使用"しました。

git fetchを実行しないで "branch Xをマージする"とした場合、私は1回の競合ごとに自分の決定を求めるでしょう。

これらの問題の原因は何ですか?リモートブランチから間違って変更を行っていますか?

+0

の変化のみを持ってコミットするので、ファイルがマージした場合

a--x--a (A) \ b--b (B) \ b--b ('origin/B', just fetched) 

マージは矛盾がありません。しかし、私はIntelliJから '自分のものを使う方法 'と合併する方法を知らない。私はコマンドラインからこれを行うだろう。 –

答えて

0

まず、フェッチする場合は、Bではなく、origin/Bをマージしてください。

第2に、マージは、最後の共通祖先以降に並行変更がない場合にのみ、マージを使用します。 xは、一般的にマージ戦略に影響を与えないはずですあなたがフェッチするかどうかorigin/B

a--x--a----------M (A, merge commit) 
    \   /
     b--b (B)/
      \ /
      b--b (origin/B, just fetched) 
+0

ブランチBで変更されたすべてのファイルがブランチAで変更されない場合、マージでhv競合が発生しないことを意味しますか? 私は今、共通の祖先Cの後にBがX.htmlを変更しました(n行追加)、Aも変更されたX.html(m行追加されました)、マージ後、m行は競合なしで消えました。 –

+0

@UchihaJavaraaはい:最後の共通祖先(ここでは「x」)からAでファイルが変更されていない場合、競合はなく、Bからの変更はAに報告されます。 – VonC

関連する問題