Анонсирован релиз распределенной системы управления исходными текстами Git 2.0, примечательный изменением поведения команд "git push" и "git add", влияющим на обратную совместимость.
Изменение поведения команды "git push" проявляется в ситуации когда при выполнении "git push" явно не указано, что именно помещать в репозиторий. В прошлых выпусках использовалась семантика "matching", при которой для обновления выбираются все внешние ветки и теги с именами, совпадающими с локальными. Начиная с Git 2.0 поведение изменено и по умолчанию применяется семантика "simple", при которой изменения отправляются только из текущей ветки в ветку с тем же именем, в случае если локальная ветка назначена для интеграции с удалённой веткой. Переопределить новое поведение можно через конфигурационную переменную "push.default".
Что касается команды "git add", то изменение связано с тем, что при неуказании добавляемых путей при выполнении "git add -u" и "git add -A", данные команды отныне применяются для всего репозитория, а не иерархии относительно текущей поддиректории, что соответствует поведению "git commit -a" и других похожих команд. Для распространения действия только начиная с текущей директории следует явно указывать текущий путь, например, "git add -u .". Команда "git add путь" в Git 2.0 соответствует выполнению "git add -A путь" в выпусках Git 1.x, т.е. при указании "git add dir/" в репозиторий будет внесена запись об удалённых из директории путях (в прошлых выпусках при указании "git add путь" удаленные пути игнорировались, теперь нужно явно указывать опцию "git add --ignore-removal путь").
Кроме того, c refs/remotes на refs/remotes/origin/ изменён префикс по умолчанию для команды "git svn", если префикс не был явно задан при помощи опции "--prefix". Из команды "git diff-files" исключена опция "-q" которая часто путалась с операцией скрытия вывода ("quiet"), но на деле указывала на игнорирование удаления (вместо "-q" нужно использовать "git diff-files --diff-filter=d"). В реализации "git request-pull" прекращена поддержка некоторых эвристических выводов при выборе ветки для pull-запроса, которые часто приводили к ошибкам. Из состава удалён интерфейс "remote-hg/bzr", который теперь развивается как отдельный плагин. В файлах ".gitignore" обеспечено игнорирование пробелов в хвосте путей (если путь оканчивается пробелом теперь нужно явно указывать "path\ ").
Из улучшений можно отметить добавление поддержки опций "--depth" в "git gc --aggressive", "--show-linear-break" в "git log", "--gpg-sign" в командах, создающих коммиты ("pull", "rebase"), "-N" в "git reset". В "git rebase" опция "-" разбирается как указание на прошлую ветку ("@{-1}"). Работа опций "-h" (скрытие заголовка) и "-c" (счётчик срабатываний) в "git grep" приближена к утилите grep. Команда "git push" при работе через интерфейс transport-helper теперь поддерживает инициирование принудительного обновления ссылок. Указание "-" вместо имени входного файла в команде "git config --file" позволяет организовать загрузку данных из входного потока.
Git является одной из самых эффективных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, Libreoffice, Systemd, X.Org, Wayland,Mesa, Gstreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Xen, Minix.