1. ホーム
  2. git

[解決済み] 複数のコミットをチェリーピックする方法

2022-01-30 09:28:01

質問

2つのブランチを持っています。コミット a は一方の先頭で、もう一方は b , c , d , ef の上に a . を移動させたい。 c , d , ef をコミットせずに最初のブランチへ b . チェリーピックを使うのは簡単です:最初のブランチをチェックアウトして、一つずつチェリーピックします。 c から f を実行し、2番目のブランチを1番目のブランチにリベースします。しかし、すべての c - f を1つのコマンドで実行できますか?

以下は、シナリオを視覚的に説明したものです(感謝 JJD ):

解決方法は?

Git 1.7.2 では、ある範囲のコミットをチェリーピックする機能が導入されました。から リリースノート :

git cherry-pick コミットの範囲を選択することを学びました (例 cherry-pick A..Bcherry-pick --stdin ) も、そうでした。 git revert これらは、より洗練されたシーケンス制御をサポートしていません。 rebase [-i] は持っていますが。

コミットからすべてのコミットをチェリーピックするには A からコミット B (ここで A よりも古い B ) を実行します。

git cherry-pick A^..B

もし、あなたが 無視 A自身、実行します。

git cherry-pick A..B

(コメント:damianさん、J. B. Rainsbergerさん、sschaefさんに感謝します。)