master に多くの変更を加えたとします。しかし、branch:release-5 にないすべてのものをそれにチェリーピックしたいと思います。
2 に答える
厳選することもできますが、リベースするとはるかに簡単になります。
git checkout -b missing-commits master
git rebase -i --author=me release-5
release-5 に既にあるすべてのコミットは選択されず、あなたのコミットのみが選択されます。その後、ブランチ Missing-commits をリリース 5 にマージできます。
つまり、cherry-pick を使用できます。
git cherry-pick --skip-empty --cherry-pick --no-merges --right-only --topo-order --do-walk master...release-5
ご覧のとおりgit rebase
、内部的にチェリー ピッキングを行う の方がはるかに使いやすいです。
チェリーピッキングの要点は、ブランチにコピーしたいコミットの特定のサブセットを選択できることです。マージを使用して別のブランチからのすべてのコミットを統合したくない状況があるため、明示的に存在します。
ここで、他のブランチにあるすべてのコミットをチェリーピックしたい状況に陥った場合は、まさにそのブランチを現在のブランチにマージしてすべての変更を統合したいマージ状況にあります。 :
git checkout release-5
git merge master
そうは言っても、リビジョン範囲の構文を使用すると、 から到達可能なコミットなしでA..B
から到達可能なコミットを指定できます。したがって、あなたの場合、ブランチから到達できないがオンになっているすべてのコミットを選択するために使用する必要があります。B
A
release-5..master
master
release-5
git cherry-pick release-5..master
しかし、繰り返しになりますが、これらすべてが必要な場合は、コミットが複製されず、実際の履歴が利用可能になるため、マージが絶対に優れたオプションです。