と の間に違いはgit merge --no-commit
ありgit cherry-pick --no-commit
ますか?
これら 2 つのコマンドの後にコミットすると、履歴に違いはありますか?
と の間に違いはgit merge --no-commit
ありgit cherry-pick --no-commit
ますか?
これら 2 つのコマンドの後にコミットすると、履歴に違いはありますか?
の後git merge --no-commit
にコミットすると、実際にはマージ コミットが行われます。一方git cherry-pick --no-commit
、単一の親を持つコミットを取得します。
したがって、はい、これら 2 つのコマンドには違いがあります。
特に、次のようなものがある場合
A -- B -- C
\ L HEAD
\
-- D -- E
cherry-pick
commit するとE
、 commit の変更は取得されませんD
。一方、 の場合merge
は、両方を取得できます。
git-mergeは 2 つ以上の開発履歴を結合するために使用されますが、git-cherry-pickはいくつかの既存のコミットによって導入された変更を適用するために使用されます。
したがって、 git-mergeを実行した後にコミットすると、Git はマージコミットと呼ばれるものを追加します。一方、cherry-pick(ing)がコミットすると、git はこれらのコミットによって導入された変更を作業ツリーの一番上に適用します (2 つまたは多くのブランチ間の融合はありません)。別の言い方をすれば、コミットは複製され、ブランチの上に置かれます。
Git Cherry-pick vs Merge Workflowを見て、リポジトリ メンテナーの実際のニーズに基づく違いを理解してください。