Новая версии 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 ещё удобнее.