2017-10-16 15 views

答えて

-1

git mergeを実行するだけで、このコマンドが実行されます。

YXの変更をまとめて試行します。

1

ブランチを作成し、masterのコードを変更して(少なくともこの部分で)変更されていないブランチをマージすると、そのコードは戻ってこないでしょう。

Gitは変更( "コミット")についてです。マスターが変更されたのと同じ場所にある部分を変更したブランチをマージすると、通知が得られ、マージが一時停止されます。それ以外の場合は、がマージされたとなります。

+0

私はこれを理解しています。これを克服する方法はありますか?愚かなコピーの貼り付け以外の方法はありますか? –

+1

あなたが望むものを手に入れたら、それはまったくのgitではありません。これは、マスターブランチのすべての変更を元に戻します。ブランチはバックアップスナップショットではありません。ただし、2つのブランチ間でdiffを作成して、復帰コミットを作成することはできます。 – clemens321

+1

別の方法は、 "git reset"を使うことです。これは、ブランチrefを他のコミットに変更します。ただし、リモートリポジトリを操作する場合、他のコミットが削除され、非転送アクションが発生する可能性があるので注意してください。 – clemens321

1

あなたが最終的にgit checkout master && git merge branch-Xを実行すると、Gitはします:

  1. masterの現在の先端のマージベースを見つけて、その名前branch-X解決さをすることを約束します。塩基を各枝先端と比較するために、2つの枝チップを比較する;
  2. この組み合わせをマージベースのコンテンツに適用して、結果の変更セットを結合し、マージされたコンテンツを作成しようとします。

master側の変更が行Yのいくつかのセットを削除含まれている場合、それはステップ3に入力の一つだ場合を除き3.

をステップ入力の一つである、それを回避する方法はありませんあなたは別のマージ戦略を使用します -merge戦略は完全なコントロールを持っているため、上記の3つのステップの一部または全部を修正することも、それらのステップの一部または全部を削除することもできますステップ3の間:

  • 自分自身(またはマージしている人)のメモを残す。たとえば、削除された行を、「マージングするときには、後でここに戻してください」と叫ぶ行に置き換えます。
  • マージ競合をに配置しようとすると、コミットが将来branch-Xの先になるようにするには、同じ行セットの変更が含まれていることを確認してください。

マージ(あなたまたは他の誰か)が誰でも鋭い警告を見るので、両方を行うことは成功の確率が最も高くなります。しかし、これらの準備ステップの両方が、将来のある時代の誰かによって、取り消される可能性があることに注意してください。git mergeそれを防ぐためにできることは何もありません。実際には、将来的に、git mergeを実行します誰


は、git merge -s <strategy-name>を経由して、このコントロールを持っています。しかし、現時点で、また私が近い将来に考えているところでは、は魔法のマージ戦略ではありません。だからこれはほとんど役に立たない。

+0

ありがとう!私がやろうとしていること。 –

+0

しかし、あなたは別の戦略( "マージ戦略"ではなく、Gitの全面的な使用)によってより効果的になるかもしれません:束の行を削除する 'master'へのコミットの代わりに' for-now 'これは一連の行を削除します。 'master'をそのまま使用し、実際に準備が整うと思うまで、for-nowを使って展開してください。 – torek

+0

ええ、私がこの状況で終わった唯一の理由は、たくさんの人が同時に機能を書いていて、2ヶ月後にそのうちの1つを削除することになったからです。それまでに何千ものコミットがあったので、それをマスターから削除する方が簡単だったようだ。しかし、これは動作するために必要な別の機能を示し、支店Xに存在し、Xがマスター---爆発 –

関連する問題