The git history command
Экспериментальная подкоманда git history, появившаяся в версиях 2.54 и 2.55, предлагает три способа переписывания истории без риска поломки дерева. fixup позволяет поправить старый коммит, включив в него подготовленные изменения, и автоматически переписать все локальные ветки, построенные на его основе, сохраняя атомарность и отказываясь от операций, которые могут вызвать конфликт. При этом она не работает с merge‑коммитами, что ограничивает применение, но открывает путь к будущим улучшениям. Это особенно ценно, когда несколько веток используют один и тот же баг‑фикс, потому что исправление автоматически поднимается по всем зависимым ветвям.
reword меняет сообщение коммита и перестраивает всё, что находится над ним, без вмешательства в индекс или рабочее дерево, позволяя править сообщения даже в удалённых ветках. split делит один коммит на два, интерактивно выбирая части изменений, что упрощает разбиение крупного коммита без сложных rebase‑ов. Обе команды сохраняют целостность истории, а их главное преимущество — возможность применять изменения к любой ветке без её проверки, что делает их практичным альтернативным инструментом, сравнимым с более новым jj, но полностью встроенным в Git. Кроме того, split позволяет интерактивно разбивать изменения на отдельные части, не требуя сложных команд git add -p.