Git での Cherry-Pick マージコミット
同じチームの複数の開発者がプロジェクトに取り組んでいる場合、そのプロジェクトの複雑さが大きいか小さいかにかかわらず、Git ブランチ間の変更を処理および管理することは非常に困難になります。
場合によっては、ブランチ全体を結合するのではなく、特定のコミットを別のブランチに結合する必要があります。この目的のために、Git で一般的に CherryPicking として知られている必須ツールを使用します。
Cherry Picking は、リポジトリブランチ内のコミットのリスト全体から 1つのコミットのみを選択する場合に使用するのに適したツールです。
Git の git cherry-pick
コマンド
git cherry-pick
は、ランダムな Git コミットをリポジトリ内の 1つのブランチから移動し、リポジトリの現在動作中の HEAD
に追加できるようにする影響力のあるコマンドです。このコマンドは、チームが行った過去の開発に関連する変更を元に戻す場合にも役立ちます。
たとえば、誤って間違ったブランチにコミットした場合は、正しいブランチにシフトし、リポジトリの新しいブランチに属するはずの正しい場所にコミットを選択します。
git merge
または git rebase
を使用する場合、ブランチからのすべてのコミットが混在します。cherry-pick
コマンドを使用すると、同化するために選択したコミットを選択できます。
Git での Cherry-Pick マージコミット
マージコミットのチェリーピッキングは、見た目ほど簡単ではありません。マージ手順を実行するとき、同じリポジトリで一度に 2つのブランチを操作します。
たとえば、Git コマンドを使用して、ブランチ parent-B
が parent-A
ブランチにマージされます。
したがって、2 人の親とのマージである特定のコミットをチェリーピックする場合、-m
オプションを使用して、diff
を使用する相手を cherry-pick
コマンドに指示する必要があります。次のコマンドでは、commit hash
を使用して特定の親ブランチについて説明します。
上記の状況の構文は次のように説明されます。
git cherry-pick -m <commit hash>
上記のコマンドの次の例で状況を説明しましょう。
M - N - O - P - Q (branch A)
\ /
R - S - T (branch B)
上に示したように、P
はマージコミットです。git cherry-pick
コマンドを実行すると、Git はコマンドに関する警告を渡します。
したがって、ここで、コミット ID を使用して親ブランチ番号を指定する必要があります。次のコマンドで実行されます。
git cherry-pick -m 1 P
この cherry-pick
コマンドは、上記の例の O- P
からすべてのコミットを取得します。
以下のコマンドを使用して、上記のアクションを実行することもできます。
git cherry-pick -m 2 P
これにより、上記の例の R- S- P
からすべてのコミットが選択されます。
注:merge commit コマンドを使用してブランチ内のコミットをチェリーピックすることは有害すぎるため、操作中は常に注意して続行してください。過去に行われたコミットの履歴を失うリスクが高くなります。
これにより、親で行ったすべての変更が中断され、その 1つのコミットに -m
を定義しませんでした。
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn