Пару раз попадал в ситуацию, когда релиз улетал в жопу, приходилось в панике откатывать. Самый простой вариант — нормальный бэкап, но с ним тоже куча заморочек: если не автоматизировать, то свежего за пару минут может просто не быть. У меня на одном проекте настроен CI, который автоматически создаёт тег и делает выгрузку базы и файлов при каждом апдейте. Если что — просто переключаюсь на предыдущий коммит и руками за минуту всё заливаю обратно.
С git revert легко работать, если изменения небольшие и база данных не тронута. А вот с миграциями лучше иметь отдельные rollback-скрипты, иначе откат может не пройти. Замечал, что многие просто надеются на авось и не держат под рукой хотя бы пару коммитов с бэкапами. Если данные не особо важные и в продакшене можно быстро перейти на старую версию — норм. Если нет, то ручной откат растягивается, и потом не поймёшь, баг ли это или откат съехал.
У кого какой опыт с быстрыми и безболезненными откатами в реальных проектах? Обычно только на git полагаетесь или ещё CI+скрипты подключаете?