ブランチが 2 つあります。コミットはa
一方のヘッドで、もう 1 つはの上にb
、、、、c
がd
あります。コミットせずに、、、を最初のブランチに移動したいと思います。チェリー ピックを使用すると簡単です。最初のブランチを 1 つずつチェックアウトしてチェリー ピックし、 2 番目のブランチを最初のブランチにリベースします。しかし、すべてを1 つのコマンドでチェリー ピックする方法はありますか?e
f
a
c
d
e
f
b
c
f
c
f
シナリオの視覚的な説明は次のとおりです(JJD):
ベストアンサー1
Git 1.7.2では、コミットの範囲をチェリーピックする機能が導入されました。リリースノート:
git cherry-pick
はコミットの範囲を選択することを学習しました (例: およびcherry-pick A..B
)cherry-pick --stdin
。 も同様ですgit revert
。ただし、これらは のより優れたシーケンス制御をサポートしていませんrebase [-i]
。
A
コミット からコミット までのすべてのコミットB
( はA
より古いB
) をチェリーピックするには、次を実行します。
git cherry-pick A^..B
A 自体を無視したい場合は、次を実行します。
git cherry-pick A..B
コメントからのメモ:
A
より古いB
か、A
別のブランチからのものである必要があります。- Windows では、
A^^..B
キャレットをエスケープする必要があるため、"A^..B"
(二重引用符) にする必要があります。 - シェルでは、キャレットは特殊文字なので (一重引用符) に
zsh
する必要があります。'A^..B'
- 詳細は以下を参照ガブリエル・ステープルズの答え。
(コメントを提供してくれた damian、JB Rainsberger、sschaef、Neptilo、Pete、TMin に感謝します。)