Как работает git merge --squash?

1,00
р.
Заметил что иногда вместо git pull --rebase делаю так
git checkout remote_my/branch_my git merge --squash branch_my git commit ...
В чем смысл такого кода

Ответ
Из Git Reference - merge:
--squash Обрабатывает рабочую область и индекс таким образом, как будто было произведено слияние (merge), но при этом не делает фактического коммита, не перемещает указатель HEAD и не записывает ничего в $GIT_DIR/MERGE_HEAD. Это позволяет сделать единый коммит к текущей ветке, содержащий все те же изменения, которые были бы применены при обычном слиянии с веткой (или несколькими, в случае сложного слияния).
Как это работает
git checkout master git merge --squash feature123 git commit -m'merged feature #123'
Все изменения в ветке feature123 становятся одним коммитом в ветке master.
Это удобно, если ветка содержит много незначительных коммитов, которые «неинтересны» для общей истории. После такой операции история ветки останется «плоской», так же как после git pull --rebase.