Различия между Git merge --squash и --no-commit - PullRequest
55 голосов
/ 07 марта 2012

Как видно из заголовка, мне не совсем понятно, в чем разница между git merge --squash и git merge --no-commit.

Насколько я понимаю, на странице справки для git merge обе команды оставятя в обновленном рабочем дереве, где все еще можно редактировать, а затем делать окончательный коммит (или несколько коммитов).

Может ли кто-нибудь прояснить различия этих двух вариантов?Когда бы я использовал один вместо другого?

1 Ответ

75 голосов
/ 07 марта 2012
git merge --no-commit

Это похоже на обычное слияние, но не создает коммит-слияние.Этот коммит будет коммитом слияния: когда вы смотрите историю, ваш коммит будет выглядеть как обычное слияние.

git merge --squash

Это объединит изменения в вашем рабочем дереве без создания коммита слияния.Когда вы фиксируете объединенные изменения, это будет выглядеть как новый «нормальный» коммит в вашей ветви: без фиксации слияния в истории.Это похоже на то, как ты сделал вишню на всех слитых изменениях.

...