Новая версия включает в себя более 550 изменений от 77 разработчиков. 20 из них впервые принимают участие в разработке Git.
Основные изменения:
- В «fast-export» добавлена опция "--anonymize", позволяющая при экспорте заменить содержимое произвольных блобов, имён разработчиков, путей и записей в логе на строки-заглушки. Подобное необходимо когда требуется сообщить об ошибке, но присутствуют ограничения по раскрытию некоторого содержимого в публичном репозиторий.
- В команду «git push» добавлена опция "--signed", позволяющая выполнить push-обновление на сервер, не заслуживающий доверия, с использованием цифровой подписи для последующего аудита и проверки привязки веток в публичном репозитории к необходимым коммитам.
- В «git archive» добавлена возможность фильтрации попадающего в архив содержимого по файловому пути (pathspec).
- В случае отсутствия привязанного к пользователю файла конфигурации (core.user) выполнение «git config --edit --global» отныне приведёт к выводу в редакторе базового шаблона конфигурации, а не пустого экрана.
- При выполнении команды «git stash list -p» теперь отображаются отличия основной версии коммита и версии из рабочего дерева по аналогии с «git stash show».
- В «git difftool» добавлена опция для отключения передачи путей в diff-бэкенд, если он завершил своё выполнение с ненулевым кодом возврата.
- В «log --date=iso» использован компактный вариант формата ISO 8601, который более удобен для восприятия человеком. Для полного следования требованиям стандарта вывода даты добавлена опция "--date=iso-strict".
- В логике работы «git prune» учтены различные пограничные ситуации.
- Добавлена защита от использования неоднозначных индексов, создаваемых некорректными реализациями Git, в которых для одного пути содержатся записи для нескольких стадий.
- Изменено наименование создаваемых при выполнении команды «git mergetool» временных файлов, для того чтобы избежать слишком большого числа точек в именах (вместо наименования «hello.BASE.4321.c» теперь используется «hello_BASE_4321.c»). Добавлена возможность размещения подобных временных файлов в отдельной директории, которую можно определить через директиву конфигурации «mergetool.writeToTemp».
- Представлен новый спецификатор «%D», который, в отличие от «%d», выводит имя тега без оформления (при «%d» выводится " (tagname)", а при «%D» просто «tagname»).
- Добавлен новый фильтр «git interpret-trailers», позволяющий откорректировать хвост сообщения к коммиту (содержит «Signed-off-by:»).
- Добавлена команда «git help everyday», при выполнении которой выводится руководство «Everyday Git in 20 commands or so».
- Сокращено потребление памяти и увеличена эффективность обработки параметров слияния при работы команды «git svn».
- В «git fsck» добавлены дополнительные проверки целостности содержимого объектов, связанных с тегами.
- В «git hash-object» добавлена опция "--literally" для упрощения отладки.
- API для манипуляции ссылками («refs») реструктуризирован для придания более транзакционного характера и поддержки атомарных обновлений при размещении хранилищ не только в традиционных ФС (например, в СУБД).
- Проведена чистка API для работы с файлами блокировок.
- Добавлена подсистема для кэширования параметров конфигурации, позволяющая избавиться от многократного чтения файлов конфигурации при выполнении некоторых команд.