Ответ
amend и squash — это команды Git для изменения истории коммитов, но они работают по-разному:
git commit --amend
- Перезаписывает последний коммит, добавляя новые изменения или изменяя его сообщение.
- Не создает новый коммит, а модифицирует существующий.
- Пример:
git commit -m "Initial commit" # Добавляем изменения и исправляем коммит git add . git commit --amend -m "Updated initial commit"
git rebase -i + squash
- Объединяет несколько коммитов в один во время интерактивного ребейза.
- Позволяет "схлопнуть" несколько коммитов в один, сохраняя историю чище.
- Пример (в интерактивном режиме ребейза):
pick abc123 First commit squash def456 Second commit squash ghi789 Third commitРезультат — один коммит с изменениями из всех трех.
Ключевое отличие:
amend— для правки последнего коммита,squash— для объединения нескольких коммитов в один.
⚠️ Обе команды изменяют историю — используйте осторожно в общих ветках!