Новая версии Git 2.45: Что изменилось?

Новая версии Git 2.45: Что изменилось?

Новый релиз Git вас приятно удивит! Мы составили подробнейший обзор изменений, которые точно привлекут ваше внимание и значительно упростят работу с Git. Благодаря множеству новых функций и оптимизаций, ваш рабочий процесс станет еще более удобным и продуктивным.

1. Поддержка нового бэкенда "reftable"

Теперь Git стал еще более мощным с добавлением нового бэкенда"reftable", который обеспечивает эффективное хранение ссылок на ветки и теги. Этот бэкенд, используя блочное хранилище, как в проекте JGit, оптимизирован для работы с огромным количеством ссылок.Это особенно полезно в репозиториях, где традиционные методы хранения приводят к значительным накладным расходам.

Включить новый бэкенд можно с помощью команды:
git init --ref-format=reftable /path/to/repo

2. Плавный переход на SHA-256

Git делает шаг в будущее, добавляя поддержку для идентификаторов объектов на базе SHA-256 наряду с SHA-1. Новый формат объектов "compatibility" позволяет легко ссылаться на объекты с использованием как основного, так и запасного хэша.
Пример инициализации такого репозитория:
git init --object-format=sha256 /path/to/repo
cd /path/to/repo
git config extensions.compatObjectFormat sha1

3. Улучшенная диагностика с "git rev-list"

Команда git rev-list теперь умеет показывать идентификаторы объектов, которые отсутствуют в локальном репозитории.
Это новшество особенно полезно для диагностики повреждений репозитория:
git rev-list --missing=print --all | grep '^?'

4. Новая команда "git reflog list"

"С новой командой git reflog list стало проще, чем когда-либо, просматривать все известные reflog-и и соответствующие им ссылки на теги и ветки.

5. Настройка префиксов в "git diff"

Теперь у вас есть возможность задать собственные префиксы для вывода git diff, которые отображаются перед файловым путём.
Пример инициализации такого репозитория:
git config diff.srcPrefix 'old/'
git config diff.dstPrefix 'new/'

6. Новый параметр core.commentString

Добавлен параметр core.commentString, который позволяет использовать любую строку вместо символа "#" для игнорирования комментариев в сообщениях для коммитов. Теперь также поддерживаются многобайтовые символы в качестве разделителя комментария.

7. Комментарии в "git config"

Теперь git config поддерживает опцию --comment, что позволяет сохранять пояснительные комментарии прямо в файле .gitconfig.
Пример инициализации такого репозитория:
git config --comment 'to show the merge base' merge.conflictStyle diff3
tail -n 2 .git/config
[merge]
conflictStyle = diff3 # to show the merge base

8. Новая опция в "git cherry-pick"

Команда git cherry-pick получила новую опцию --empty, которая автоматически удаляет избыточные коммиты, аналогично опции --empty в git-rebase и git-am.

9. Обновление команды "git checkout-p"

Теперь в git checkout -p можно использовать символ "@" в качестве синонима имени "HEAD", что делает работу с Git ещё удобнее.

Начать дискуссию