40

と の間に違いはgit merge --no-commitありgit cherry-pick --no-commitますか?

これら 2 つのコマンドの後にコミットすると、履歴に違いはありますか?

4

2 に答える 2

54

の後git merge --no-commitにコミットすると、実際にはマージ コミットが行われます。一方git cherry-pick --no-commit、単一の親を持つコミットを取得します。

したがって、はい、これら 2 つのコマンドには違いがあります。

特に、次のようなものがある場合

A -- B -- C
 \        L HEAD
  \
   -- D -- E

cherry-pickcommit するとE、 commit の変更は取得されませんD。一方、 の場合mergeは、両方を取得できます。

于 2013-12-30T09:54:09.950 に答える
9

git-mergeは 2 つ以上の開発履歴を結合するために使用されますが、git-cherry-pickはいくつかの既存のコミットによって導入された変更を適用するために使用されます。

したがって、 git-mergeを実行した後にコミットすると、Git はマージコミットと呼ばれるものを追加します。一方、cherry-pick(ing)がコミットすると、git はこれらのコミットによって導入された変更を作業ツリーの一番上に適用します (2 つまたは多くのブランチ間の融合はありません)。別の言い方をすれば、コミットは複製され、ブランチの上に置かれます。

Git Cherry-pick vs Merge Workflowを見て、リポジトリ メンテナーの実際のニーズに基づく違いを理解してください。

于 2013-12-30T10:00:20.277 に答える