Подтвердить что ты не робот

Git merge --no-commit vs git cherry-pick --no-commit

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

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

4b9b3361

Ответ 1

Если вы зафиксируете после git merge --no-commit, вы действительно получите фиксацию слияния. Если после git cherry-pick --no-commit вы получите фиксацию с одним родителем.

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

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

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

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

Ответ 2

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

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

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