Git Cherry-Pick vs マージ ワークフロー
この記事では、git cherry-pick
および git merge
コマンドのワークフローについて説明します。 両方のコマンドを使用して、あるブランチから別のブランチへの変更を Git バージョン管理システムに統合します。
ただし、特定のシナリオでは、あるコマンドを別のコマンドよりも優先して使用します。
git cherry-pick
コマンド
git cherry-pick
コマンドは、参照によって任意の Git コミットを選択し、それらを現在の HEAD
に適用できる便利な Git ユーティリティです。 このコマンドを使用して、あるブランチからコミットを選択し、別のブランチに適用します。
git cherry-pick
コマンドはいつ使用する必要がありますか?
git cherry-pick
コマンドは便利ですが、常にベスト プラクティスであるとは限りません。 一部のシナリオでは、従来の git merge
コマンドがむしろ好まれます。
それにもかかわらず、コマンドが理想的であると考えることができる特定のシナリオがあります。 いくつか議論しましょう。
いくつかのブランチを持つプロジェクトに取り組んでいるとしましょう。 1つのブランチで変更を行った後、間違ったブランチでチェックアウトされていることがわかりました。
これらの変更はこのブランチに属していないため、git cherry-pick
コマンドを使用して変更を正しいブランチに移動できます。
以下に示すように、コミット ハッシュを書き留め、git checkout
コマンドで正しいブランチに切り替えて、cherry-pick
を実行します。
$ git cherry-pick <commit-id>
git cherry-pick
コマンドは、チーム コラボレーションにも最適です。 プロジェクトには、フロントエンド コンポーネントとバックエンド コンポーネントの間の共有コードがあります。
git cherry-pick
コマンドを使用して、ある開発者が別の開発者からコードをコピーできます。
また、バグの修正には git cherry-pick
コマンドも使用します。 プロジェクトで新しい機能の作業を開始し、その過程で既存のバグを特定したとします。
バグを明示的に修正するコミットを作成し、それを main
ブランチに cherry-pick
できます。 このコマンドは、失われたコミットを復元するのにも理想的です。
git merge
コマンド
git merge
コマンドについては、多くを語ることはありません。 2つのブランチのコミット履歴を関連付けて、マージ コミットを作成するだけです。
2つをマージすることで、development
ブランチから main
ブランチに変更を取り込むことができます。 git rebase
コマンドの代わりに、あるブランチから別のブランチに変更を組み込む非破壊的な方法です。
マージは非常に簡単です。 マージしたいブランチに切り替えてコマンドを実行するだけです。 ここに例があります。
main
ブランチに関連する development
ブランチにいくつかのコミットがあると仮定すると、次のようにこれらの変更を main
ブランチに組み込むことができます。
# Switch to the main branch
$ git checkout main
# Merge the two
$ git merge development
git cherry-pick
と git merge
の違い
これまで見てきたように、どちらのコマンドも、あるブランチから別のブランチに変更を統合するときに役立ちます。 ただし、違いは各コマンドの使用方法にあります。
git cherry-pick
コマンドは、大きな Git リポジトリの小さなサブセットをサンプリングするのに理想的です。 特定のコミットをブランチ間で移動したい場合に便利です。
一方、大量のコミットには git merge
コマンドが適しています。 あるブランチから別のブランチに 20 個のコミットを チェリーピック
するのは理想的ではありません。
git merge
コマンドは、このようなシナリオにより適しています。
そうは言っても、各コマンドには長所と短所があります。 いくつか議論しましょう。
git cherry-pick
コマンドは、無関係なマージ コミットを常に導入する git merge
コマンドとは対照的に、リポジトリ内の混乱を減らします。
反対に、git cherry-pick
コマンドを使用すると、特に共有 Git リポジトリがある場合に、コミットが重複して他の開発者を混乱させる可能性があります。
git merge
コマンドは、特に多くのコミットを処理する場合に、変更をより迅速に統合するのに役立ちます。 このコミットの欠点は、マージの競合が発生する可能性があることです。
もちろん、git cherry-pick
コマンドを使用するとマージの競合が発生する可能性がありますが、git merge
コマンドを使用すると、コミットが増えるほど競合が発生する可能性が高くなります。
git merge
および git cherry-pick
コマンドは、あるブランチから別のブランチへの変更を Git に組み込むときに役立ちます。 違いは、各コマンドをいつ、どのように使用するかにあります。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn