Вопрос

У меня есть скрипт, который должен ссылаться на начальный коммит в репозитории. У git есть специальная ссылка HEAD, но нет соответствующей TAIL. Я не могу найти в git help rev-parse ничего, что могло бы мне помочь.

Вот что я хотел бы сделать:

git show TAIL

Вот один из вариантов, который у меня есть:

git show `git log --reverse | if read a commit ; then echo $commit ; fi`

Это довольно странно и зависит от того, что вывод git log не меняется.

Прямо сейчас я просто помечаю начальный коммит и использую его как свой refspec. Однако я хотел бы выпустить общий инструмент, так что это не лучший вариант.

Это было полезно?

Решение

Не используйте git-log для сценариев: используйте либо git-rev-list, либо git-log с указанным пользовательским форматом (" - format = < sth > " опция).

В вашем вопросе есть дополнительная проблема: в репозитории может быть более одного такого корневого коммита TAIL (коммит без родительского контроля) (даже если мы не учитываем отключенные ветки, такие как 'html', ' man 'и' todo 'в репозитории git.git). Обычно это является результатом объединения отдельных проектов в один или использования объединения поддеревьев отдельно разработанного подпроекта.

Например, в git-репозитории имеется 6 корневых коммитов: git-gui, gitk (объединение в поддерево), gitweb (объединены, больше не разрабатываются отдельно), инструменты git mail (объединены в самом начале истории проекта) и p4-fast -экспорт (возможно, случайный). Это не считая корней веток 'html и' man ', & Quot; удобство & Quot; ветки, содержащие предварительно сгенерированную документацию, и ветку '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}$"

Другие советы

git rev-list HEAD | tail -n 1 - более стабильный вариант.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top