複数のコミットをチェリーピックする方法 質問する

複数のコミットをチェリーピックする方法 質問する

ブランチが 2 つあります。コミットはa一方のヘッドで、もう 1 つは上にb、、、、cdあります。コミットせずに、、、を最初のブランチに移動したいと思います。チェリー ピックを使用すると簡単です。最初のブランチを 1 つずつチェックアウトしてチェリー ピックし、 2 番目のブランチを最初のブランチにリベースします。しかし、すべて1 つのコマンドでチェリー ピックする方法はありますか?efacdefbcfcf

シナリオの視覚的な説明は次のとおりです(JJD):

コミットは、「前」と「後」の状態を示しています。「前」の状態では、コミット a から f が 1 つの連続したシーケンスに接続されています。「後」の状態では、コミット c から f が再配置され、順序を変更せずに a に直接接続され、コミット b が残されています。

ベストアンサー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 に感謝します。)

おすすめ記事