2016-05-10 17 views
0

gitを使用しています。私は3つのブランチマスター(m)、feature1(f1)とfeature2(f2)を持っています。Gitは1つの分岐を別の分岐にマージします。

---------------------メートル
        |       |
        |         ------- F1
          ------------- F2

私はF2にF1をマージしています。その後、マージを元に戻し、f2をマスターにマージすると、 マスターはf1をマージし、f1マージを元に戻すためにコミットします。

私はマスターから最新の変更を取得したいので、マスターをf1にマージしようとしましたが、マージしようとすると以前のすべての変更が削除されました。マージ復帰コミットなしでmasterを私のfeature1(f1)にマージする方法はありますか?

+0

あなたは対話型のリベースでこれを行うことができますが、最も確実なのは、リバートコミットの 'git revert'でしょう。 –

+0

私はまずマスターを自分のフィーチャーアプリにマージしてから、復帰コミットを取り返します –

+0

はい。それがそれをするかどうかを確認してください。また、各ブランチの先端に新しいブランチを作成して、自分が何をしているかに関係なく、今のブランチに戻すことができます。これは、破壊的で歴史的に変化する行動であるリベースのような行動に特に役立ちます。 –

答えて

2

マージコミットを元に戻すときは、マージに含まれる祖先を元に戻すことができないため、これらの変更は後続のマージでは使用できません。

マスターをマージした後、f1ブランチのコミットを元に戻すことでこれを解決できます。あなたが望んでいないと推測しているf1へのマージの前に、マスターでf1の変更があるので、マスターで元に戻さないでください。