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

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

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


person whenov    schedule 30.12.2013    source источник


Ответы (2)


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

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

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

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

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

person gturri    schedule 30.12.2013

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

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

Взгляните на Git Cherry-pick против рабочего процесса слияния, чтобы понять различия, основанные на на реальные нужды мейнтейнера репо.

person Ahmed Siouani    schedule 30.12.2013