Различия между git merge --squash и --no-commit


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

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

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

1   51   2012-03-07 14:08:07

1 ответ:

git merge --no-commit

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

git merge --squash

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