Найти тему
Git in Sky

Все, что нужно знать о Git 2.45: Новые функции и улучшения

Оглавление

В этом обновлении команда разработчиков проделала огромную работу! Новая версия включает множество полезных функций и улучшений, которые значительно упростят вашу работу с 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 ещё удобнее.