Когда их не использовать: Если вы боитесь изменить историю мерзавцев и, возможно, потерять изменения.
Когда использовать: Для того, чтобы поддерживать постоянную историю с сообщениями на месте.
- Сквош
- Предположим, что вы работаете над веткой и делаете несколько коммитов в форме
wip templates
, wip logic
, wip
- вы можете затем объединить все эти промежуточные коммиты в один большой коммит через сквош и создать достойное послание для них.
Я больше не использую сквош вручную, поскольку большинство приличных веб-клиентов (например, bitbucket, github) допускают стратегию слияния сквоша для запросов на извлечение.
- Rebase
- Избегает слияния коммитов (история танго)
- git отменяет все ваши коммиты, использует другое состояние другой ветви в качестве новой базы и повторно применяет ваши коммиты. Каждый из ваших коммитов получит новый хеш в процессе.
- Используйте его, чтобы поддерживать ветку функции в актуальном состоянии с основной веткой
И перебазирование, и сжатие меняют историю и поэтому должны использоваться только в ветвях функций, принадлежащих одному разработчику. Ваша основная ветвь должна оставаться, а любая публичная ветвь должна оставаться такой, как есть.
(Вы можете всегда разрешить pull --rebase
вместо pull
, поскольку это только меняет историю вашего локального хранилища.)