そのため、すでに作成している別のブランチからブランチを作成し、ブランチをマスターにマージしようとすると、両方のブランチをマージしなければならない状況に遭遇しました。
ここに図があります
マスター->
->Branch 1 -> Branch 2
理にかなっている場合は、ブランチ1の変更をマージせずに、ブランチ2の変更だけをマスターにマージできるようにしたいと考えています。私はリセットと復帰を調べましたが、これらのものはブランチ2で行ったすべての変更を削除するようです。
ありがとう
次の構文でgit rebase --ontoを試してください:
Branch1を含めずにBranch2の変更をマスターに適用するには
git rebase --onto master branch1 branch2
git help rebase
からの関連出力:
あるブランチに基づいてトピックブランチを別のブランチに移植し、
rebase --onto
を使用して、後者のブランチからトピックブランチを分岐したふりをする方法を次に示します。最初に、topicがブランチnextに基づいていると仮定します。たとえば、topicで開発された機能は、nextにあるいくつかの機能に依存します。
o---o---o---o---o master \ o---o---o---o---o next \ o---o---o topic
topicをブランチから分岐させたいmaster;たとえば、topicが依存する機能がより安定したmasterブランチにマージされたためです。ツリーを次のようにしたいとします。
o---o---o---o---o master | \ | o'--o'--o' topic \ o---o---o---o---o next
これは、次のコマンドを使用して取得できます。
git rebase --onto master next topic
ここで言及されているリベースのリスクと落とし穴に注意してください: http://git-scm.com/book/en/Git-Branching-Rebasing
これを行う1つの方法は、cherry-pick
を使用することです。 git log branch2
を実行し、必要なコミットIDを見つけて、git checkout master
を使用してmaster
ブランチに切り替え、次にgit cherry-pick <commit_id>
を使用します
詳細については、この投稿を参照してください