Документация объясняет это очень хорошо:
--squash=<commit>
Создание сообщения фиксации для использования с rebase --autosquash
. Строка темы сообщения о фиксации берется из указанного коммита с префиксом «squash!». Может использоваться с дополнительными параметрами сообщения о фиксации (-m
/ -c
/ -C
/ -F
). Подробности смотрите в git-rebase [1] .
Это означает, что --squash
(также флаги --fixup
) принимает коммит в качестве аргумента, иформатирует сообщение для использования с --autosquash
. Можно установить rebase.autosquash = true
в вашей конфигурации, чтобы сделать весь процесс короче.
Если вы хотите раздавить свои последние N
коммитов, вы можете сделать следующее:
git reset --soft HEAD~N && git commit
Это сбросит HEAD
на HEAD~N
, поэтому индекс и рабочий каталог не будут изменены вообще, что означает, что теперь вы можете использовать git commit
и создать единый коммит для всех изменений.