Ответ 1
Разница между двумя видами слияния только отличается в истории коммитов (как вы показали журналы на графике).
Позвольте проиллюстрировать графиками. Примите историю фиксации, как показано ниже, до слияния:
A---B---C---D master
\
E---F---G develop
Слияние (несколько родителей):
Используемая команда - git merge branchname
. Это стандартный способ объединения двух ветвей.
Когда вы объединяете ветку develop
в ветку master
с помощью Слияние коммитов в SmartGit (git merge develop
), история коммитов будет выглядеть так:
A---B---C---D---M master
\ /
E---F---G develop
Простой коммит (один из родителей, "сквош"):
Он объединяет две ветки с опцией --squash
, используется команда git merge branchname --squash
.
Создайте рабочее дерево и состояние индекса, как если бы произошло реальное слияние (за исключением информации о слиянии), но на самом деле не выполняйте зафиксировать, переместить заголовок или записать $ GIT_DIR/MERGE_HEAD (чтобы вызвать следующая команда git commit для создания коммита слияния). Это позволяет вам создать один коммит поверх текущей ветки, эффект которого так же, как слияние другой ветки (или более в случае осьминога).
Когда вы объединяете ветку develop
в ветку master
с помощью простой фиксации в SmartGit (git merge develop --squash
), он получает изменения из ветки develop
в ветку master
как новый обычный коммит (как если произошло реальное слияние), и история коммитов будет:
A---B---C---D---M master
\
E---F---G develop