Вместо использования оператора squash
в интерфейсе git rebase -i
мы можем использовать exec git merge --squash
для получения желаемого эффекта. Например, вместо
pick 31988313 master
pick 42983473 first commit of squash
squash 231adf41 second commit of squash
...
squash e32b1fa4 last commit of squash
pick 1ad9e130 more commits
Мы можем использовать
pick 31988313 master
drop 42983473 first commit of squash
drop 231adf41 second commit of squash
...
drop e32b1fa4 last commit of squash
exec git merge --squash e32b1fa4
pick 1ad9e130 more commits
Недостатком является то, что необходимо принять дополнительные меры, чтобы случайно не отбросить слишком много коммитов.