Проект Git с открытым исходным кодом выпустил версию 2.56.0 28 сентября 2026 года после вклада более 104 человек, включая 39 новых участников. Релиз направлен на снижение рисков ошибок слияния и ускорение операций, от которых зависят крупные репозитории и сервисы хостинга кода.
Подготовка конфликтов без затрагивания других изменений
Git 2.56 добавляет режим git add --resolved для обработки только файлов, находившихся в состоянии конфликта. В отличие от таких команд, как git add -u, новый режим не пытается добавить все изменённые отслеживаемые файлы, тем самым защищая локальные изменения, не связанные с операцией слияния.
Перед подготовкой Git проверяет неслитые текстовые файлы на наличие оставшихся маркеров конфликта. Если маркер обнаружен в любом указанном файле, индекс остаётся без изменений, вместо того чтобы подготовить часть операции. Операцию можно ограничить с помощью pathspec, а удаления и двоичные конфликты обрабатываются обычным образом, поскольку они не содержат текстовых маркеров.
Ускорение поиска баз слияния
В релизе улучшен алгоритм поиска лучших общих предков между коммитами — процесс, используемый операциями слияния, различиями с тремя точками и сравнениями запросов на слияние. Теперь Git останавливается, когда одна из исключительных сторон исчерпывается в очереди поиска, поскольку после этого новая база слияния появиться не может.
В одном крупном монорепозитории изменение сократило время операции с 0,68 секунды до 0,01 секунды, а производительные оценки на двух крупных репозиториях показали ускорение примерно в 70 раз в одном случае и в среднем почти в 20 раз в другом. Кроме того, операция git merge-base --all v4.8 v4.9 в случае, связанном с ядром Linux, сократилась с 167 441 шага и 0,29 секунды до 3 887 шагов и 0,01 секунды.
Меньшая перепаковка для сервисов хостинга
Git 2.56 устранил два препятствия для использования перепаковки с учётом путей — технологии, которая группирует близкие объекты файлов в дереве репозитория, чтобы улучшить их сжатие. В тесте на копии репозитория Fluent UI размер хранилища снизился с 558,5 мегабайта при традиционной перепаковке до 164,4 мегабайта при использовании --path-walk, то есть примерно на 71%.
Теперь этот метод совместим с картами достижимости и островами различий, что позволяет сервисам хостинга оценивать экономию хранилища, сохраняя существующие механизмы обслуживания и изоляции. Однако по умолчанию он не включён и не означает автоматического перехода всех репозиториев на новый режим.
Дополнительные инструменты и практические улучшения
- Экспериментальная команда git history drop добавила удаление коммита и повторное воспроизведение последующих коммитов поверх него; при этом сохраняются ограничения, связанные с конфликтами, корневыми коммитами и операциями слияния.
- Команда git refs объединяет операции создания, обновления, удаления и переименования ссылок, поддерживая защиту compare-and-swap с использованием старых значений.
- git branch --delete-merged позволяет массово удалять слитые ветки в соответствии с ветками отслеживания, с возможностью предварительного просмотра и защиты указанных веток.
- git bisect run --reset-when-found добавляет автоматический сброс состояния после обнаружения коммита, вызвавшего сбой.
- Команда git repack может вручную удалять крупные двоичные объекты, восстановленные в частичных клонах, сохраняя возможность получить их с доверенного сервера при необходимости.
- git log --follow лучше отслеживает переименования путей в нелинейной истории, а также улучшает отображение графов с несколькими корнями.
Почему этот релиз важен?
Практическая ценность Git 2.56 не ограничивается новыми командами: релиз устраняет непосредственные точки трения в работе разработчиков и администраторов репозиториев. Режим git add --resolved снижает вероятность включения непреднамеренных изменений, тогда как улучшения баз слияния и перепаковки направлены на сокращение временных и дисковых затрат в крупных репозиториях. Тем не менее некоторые инструменты остаются экспериментальными или ручными, особенно команды управления историей и очистки объектов в частичных клонах, поэтому их не следует рассматривать как автоматические политики или безусловную замену существующему рабочему процессу.
Релиз показывает, что проект Git продолжает повышать производительность на уровне алгоритмов и внутренних структур, а не только добавлять команды для конечного пользователя. Подробности релиза рекомендуют обратиться к полным примечаниям к Git 2.56, чтобы изучить остальные изменения перед внедрением экспериментальных функций в производственных средах.