Squash и команда rebase в Git выполняют разные задачи.
Команда rebase используется для повторного применения последовательности коммитов из одной ветки в другую. 1 С её помощью обычно объединяют изменения из одной ветки в другую, сохраняя при этом чистую историю коммитов. 1
Squash позволяет объединить несколько коммитов в один. 12 В процессе выбирают базовый коммит и объединяют в него все изменения из последовательных коммитов. 2 В результате получается один базовый коммит, который содержит изменения из нескольких выбранных коммитов. 2
Таким образом, основное отличие squash от rebase в том, что rebase работает с последовательностью коммитов, а squash — с их объединением.