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, чтобы понять различия, основанные на реальных потребностях сопровождающего репо.