git merge --no-commit против git cherry-pick --no-commit

Есть ли разница между git merge --no-commit а также git cherry-pick --no-commit?

И есть ли разница в истории, если я сделаю коммит после этих двух команд?

2 ответа

Решение

Если вы совершите после git merge --no-commitвы фактически получите коммит слияния. Тогда как после git cherry-pick --no-commit вы получите коммит с одним родителем.

Следовательно, да, есть разница между этими двумя командами.

В частности, если у вас есть что-то вроде

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

если ты cherry-pick совершить Eвы не получите модификаций коммита D, Тогда как если вы mergeВы получите оба.

Хотя git-merge используется для объединения двух или более историй разработки, git-cherry-pick используется для применения изменений, внесенных некоторыми существующими коммитами.

Итак, когда вы выполните коммит после выполнения git-merge, Git добавит так называемый коммит слияния. С другой стороны, когда коммиты cherry-pick(ing), git будет применять изменения, внесенные этими коммитами, в верхней части вашего рабочего дерева (между двумя или многими ветвями нет слияния). Иными словами, коммиты клонируются и помещаются поверх вашей ветви.

Взгляните на Git Cherry-pick против Merge Workflow, чтобы понять различия, основанные на реальных потребностях сопровождающего репо.

Другие вопросы по тегам