Переход от серии версий 1.7.x к 1.8.x обусловлен изменением поведения команды "git push". В ситуации когда при выполнении "git push" явно не указано что именно помещать в репозиторий в прошлых выпусках использовалась семантика "matching", при которой для обновления выбирались все внешние ветки и теги с именами, совпадающими с локальными. Начиная с ветки 1.8 поведение изменено и по умолчанию будет применяться семантика "simple", при которой изменения отправляются только из текущей ветки в ветку с тем же именем, в случае если локальная ветка назначена для интеграции с удалённой веткой. Переопределить новое поведение можно через конфигурационную переменную "push.default".
Из других изменений в Git 1.8.0 можно отметить:
Команда "git branch --set-upstream" объявлена устаревшей и может перестать работать в будущих выпусках. В качестве замены представлена команда "git branch [-u|--set-upstream-to]". Ранее были не редки случаи указания "git branch --set-upstream origin/master", что приводило к созданию локальной ветки "origin/master" для интеграции с текущей загруженной веткой, что явно не то что подразумевал пользователь. Окончание "-to" поможет исключить ошибочную трактовку назначения опции;
В "git svn" обеспечена поддержка работы с SVN 1.7. В "git p4" добавлена опция "--conflicts" для определения действий в случае обнаружения конфликта при выполнении "p4 submit";
В состав включена собственная реализация библиотеки регулярных выражений для платформ, на которых наблюдаются проблемы с работой библиотеки regexp. Также добавлены обвязки для обеспечения совместимости с нестандартными реализациями mkdir и setitimer();
В парсер опций "git checkout" добавлена проверка типичных ошибок в порядке задания параметров командной строки. Например, при выполнении "git checkout -b -t foo bar" будет указано, что вместо имени ветки указана опция "-t";
Внутренние вызовы "git merge-base" заменены на более упрощённые аналоги, выполняющие только проверки наложения коммитов, без более ресурсоёмких проверок слияний веток;
Для платформ Win32 и GNOME добавлены хелперы для доступа к ключам текущего пользователя;
Выполнено начальное портирование для операционной системы серверов HP NonStop;
При выполнении "git am" теперь из строки "RE: subject" вырезается и префикс "RE:", а не только "Re:" и "re:";
В команду "git cherry-pick" добавлена опция "--allow-empty-message" для повторной отправки коммита без занесения сообщений в лог;
В команду "git daemon" добавлена опция "--access-hook", разрешающая внешним командам доступ к сервисам проверки по IP или пути к репозиторию.
В команде "git difftool --dir-diff" реализована поддержка использования символических ссылок для подготовки временной копии рабочего дерева;
В команду "git grep" по умолчанию добавлена возможность указания нестандартных типов масок;
В команде "git log -g" появилась опция "--grep-reflog=pattern" для ограничения вывода с использованием фильтра по маске;
В команду "git merge-base" добавлена опция "--is-ancestor A B", позволяющая проверить является ли А прародителем B;
В команду "git rebase -i" добавлена опция "--edit-todo" для написания инструкций по дальнейшим изменениям;
Через переменные конфигурации mergetool.$name.cmd теперь можно переопределить любые команды для "git mergetool", в том числе и встроенные;
Интегрированы накопившиеся изменения для "git gui".
