gitcherry-pickコマンド
コードをあるブランチから別のブランチに移動する場合、一般的な方法はmerge
orrebase
命令ですが、ブランチのコミット(または一部)を別のブランチに移動する場合は、cherry-pick
命令。
1.コミットを転送します
たとえば、次の図に示すように、倉庫には、、master
およびブランチfeature-new
があります。feature-old
次に、ブランチのGコミットをブランチにfeature-old
適用feature-new
。次のコマンドを実行します。
# 假设现在在master分支
# 从master分支切换到feature-new(要接收别的分支某次提交转移的分支)
git checkout feature-new
# 执行转移操作:git cherry-pick <commitHash>
git cherry-pick G
上記のコマンドを実行した後のコードベースは次のようになります。
つまり、新しいコミットGがfeature-new
ブランチの最後に追加されました。
注: cherry-pick
命令のパラメーターは、コミットのハッシュ値である必要はありません。また、ブランチ名も受け入れられます。これは、次のように、ブランチの最新のコミットが転送されることを示します。
# 将feature-old分支的最新一次提交H转移到当前分支
git cherry-pick feature-old
2.いくつかのコミットを転送します
git cherry-pick <commitHashA> <commitHashA>
上記のコマンドは、2つのコミットAとBを現在のブランチに適用します。これにより、現在のブランチに2つの対応する新しいコミットが発生します。
一連の連続したコミットを転送する場合は、次の簡略構文を使用できます。
git cherry-pick A..B
上記のコマンドは、すべてのコミットをAからBに転送できます。正しい順序で配置する必要があります。コミットAは、コミットBよりも前である必要があります。そうでない場合、コマンドはエラーなしで失敗します。
注:上記のコマンドでは、コミットAはに含まcherry-pick
れ。コミットAを含める場合は、次の構文を使用できます。
git cherry-pick A^..B
3.コードの競合
3.1--続行
git cherry-pick --continue
ユーザーがコードの競合を解決した後、最初に変更されたファイルを一時記憶域(git add .
)に再度追加し、次に上記のコマンドを使用してcherry-pick
プロセスを続行します。
3.2--中絶
git cherry-pick --abort
コードの競合が発生した後、マージを中止して、操作前の状態に戻します。
3.3--終了
git cherry-pick --quit
コードの競合が発生した後、終了しますcherry-pick
が、操作前の状態には戻さないでください。