HOWTO · Git

Git Cherry-Pick vs マージ ワークフロー

Git チェリーピック コマンドと Git マージ コマンドを区別します。

このページの内容

この記事では、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-pickgit 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 に組み込むときに役立ちます。 違いは、各コマンドをいつ、どのように使用するかにあります。