Не используйте git-log для сценариев: используйте либо git-rev-list, либо git-log с указанным пользовательским форматом (опция «--format = »).
Есть дополнительная проблема с вашим вопросом: может существовать более чем одна такая корневая фиксация TAIL (фиксация без родителей) в репозитории (даже если мы исключаем отключенные ветки, такие как 'html', 'man 'и' todo 'в репозитории git.git). Обычно это является результатом объединения отдельных проектов в один или использования объединения поддеревьев отдельно разработанного подпроекта.
Например, в git-репозитории есть 6 корневых коммитов: git-gui, gitk (объединение в поддерево), gitweb (объединены, больше не разрабатываются отдельно), инструменты git mail (объединены в самом начале истории проекта) и p4-fast -экспорт (возможно, случайный). Это не считая корней веток «html» и «man», «удобных» веток, которые содержат предварительно сгенерированную документацию, и ветки «todo» со списком TODO и скриптами.
Если у вас git 1.7.4.2 или новее, вы можете использовать опцию --max-parents
:
$ git rev-list --max-parents=0 HEAD
В противном случае вы можете получить список всех бездетных (корневых) коммитов, доступных из текущей ветки, используя:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"