Есть ли разница между git merge --no-commit
и git cherry-pick --no-commit
?
И будет ли какая-нибудь разница в истории, если я сделаю коммит после этих двух команд?
Есть ли разница между git merge --no-commit
и git cherry-pick --no-commit
?
И будет ли какая-нибудь разница в истории, если я сделаю коммит после этих двух команд?
Если вы сделаете коммит после 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 добавит так называемое слияние совершить. С другой стороны, когда выбор вишни (ing) коммитов, git применит изменения, внесенные этими коммитами, в верхнюю часть вашего рабочего дерева (нет слияния между двумя или несколькими ветвями). Другими словами, коммиты клонируются и помещаются поверх вашей ветки.
Взгляните на Git Cherry-pick против рабочего процесса слияния, чтобы понять различия, основанные на на реальные нужды мейнтейнера репо.