railroadman
4/10/2020 - 9:10 AM

git trips

9

Из 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.