Выпуск распределенной системы управления исходными текстами Git 2.23

Представлен выпуск распределенной системы управления исходными текстами Git 2.23.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.

По сравнению с прошлым выпуском в новую версию принято 505 изменений, подготовленных при участии 77 разработчиков, из которых 26 впервые приняли участие в разработке. Основные новшества:

  • Представлены экспериментальные команды «git switch» и «git restore», призванные разделить между собой малосвязанные возможности «git checkout», такие как манипуляция ветками (переключение и создание) и восстановление файлов в рабочей директории («git checkout $commit — $filename») или сразу в staging area (»--staging», не имеет аналога в «git checkout»). Стоит отметить, что, в отличие от «git checkout», «git restore» удаляет неотслеживаемые файлы из восстанавливаемых директорий (»--no-overlay» по умолчанию).
  • Добавлена опция «git merge --quit», которая, аналогично »--abort», останавливает процесс слияния веток, но оставляет при этом рабочую директорию нетронутой. Данная опция может оказаться полезной в случае, если некоторые из изменений, внесённых в ходе ручного слияния, предпочтительнее оформить в виде отдельного коммита.
  • Команды «git clone», «git fetch» и «git push» теперь учитывают наличие коммитов в связанных репозиториях (alternates);
  • Добавлены опции «git blame --ignore-rev» и »--ignore-revs-file», позволяющие пропустить коммиты, в которых внесены незначимые правки (например, исправления форматирования);
  • Добавлена опция «git cherry-pick --skip» для пропуска конфликтного коммита (запоминаемый аналог последовательности «git reset && git cherry-pick --continue»);
  • Добавлена настройка status.aheadBehind, фиксирующая опцию «git status --[no-]ahead-behind» на постоянной основе;
  • С данного выпуска «git log» по умолчанию учитывает изменения, внесённые mailmap, аналогично тому, как это уже происходит в git shortlog;
  • Существенно ускорена операция обновления представленного в 2.18 экспериментального кеша графа коммитов (core.commitGraph). Также ускорен git for-each-ref в случае использования нескольких шаблонов и сокращено количество вызовов auto-gc в «git fetch --multiple»;
  • «git branch --list» теперь всегда показывает detached HEAD в самом начале списка независимо от локали.

© OpenNet