Многие разработчики панически боятся git rebase -i. На самом деле всё куда прозаичнее: при запуске git rebase -i HEAD~4 git просто открывает текстовый файл. Это не экшн, а план предстоящих действий — список коммитов, где каждую строчку можно отредактировать. Если передумали, в любой момент работает git rebase --abort, и ветка возвращается в исходное состояние.
В открывшемся редакторе вы видите коммиты с префиксом pick. Меняете pick на другую команду — и git переиграет историю по-новому. r (или reword) приостановит процесс, чтобы вы поправили сообщение коммита. d (или drop) просто выкинет коммит — можно даже удалить строку целиком, эффект тот же. Остальные коммиты останутся нетронутыми. Например, если у вас четыре коммита, вы переименовали первый и дропнули последний, на выходе получится три коммита вместо четырёх. Никакой магии.
Потерять работу при интерактивном rebase почти невозможно. Во-первых, git rebase --abort откатывает всё назад. Во-вторых, rebase не трогает старые коммиты, а создаёт новые и переносит указатель ветки. Оригиналы ещё некоторое время висят в объектной базе git, пока не приедет сборщик мусора. Главный спасательный круг — git reflog, журнал всех перемещений ветки. Нашли строку до rebase, выполнили git reset --hard HEAD@{4} — и всё отыграно назад. Даже если reflog пугает, можно перед началом создать явную backup-ветку: git branch backup-before-rebase. Тогда восстановление сводится к git reset --hard backup-before-rebase.
Конфликты при rebase ничем не страшнее обычных мерж-конфликтов. Git остановится, покажет инструкцию: разрешаете конфликт, делаете git add, затем git rebase --continue. Удобно, что вы разбираете конфликт по одному коммиту, а не всей веткой разом.
Конечно, голову включать всё равно нужно. Автор советует свободно ребейзить свои feature-ветки до или во время код-ревью и пушить результат с git push --force-with-lease. Эта команда безопаснее простого --force, потому что не перезапишет чужие изменения. Вывод простой: любой уважающий себя разработчик обязан спокойно пройти через простейший интерактивный rebase. Это не страшно, а чертовски удобно.