Не використовуйте git-log для сценаріїв: використовуйте git-rev-list
або git-log
встановлений спеціальний формат ( --format=*<sth>*
опцію).
З вашим питанням є додаткова проблема: у сховищі може існувати більше одного такого кореневого комітету TAIL (бездітна комісія) (навіть якщо ми знижуємо від’єднані гілки, такі як 'html', 'man' і 'todo' в git.git сховище). Зазвичай це результат об'єднання окремих проектів в один або використання підрівень підрівню окремо розробленого підпроекту.
Наприклад, репозиторій git має 6 кореневих комітетів: git-gui, gitk (підлягає злиття), gitweb (об'єднаний, більше не розробляється окремо), інструменти для git-пошти (об'єднані дуже рано в історії проекту) та p4-швидкий експорт ( можливо випадково). Це не рахує коренів гілок 'html та' man ', гілок "зручності", що містить попередньо сформовану документацію, та гілка' todo 'зі списком та скриптами TODO.
Якщо у вас є git 1.7.4.2 або новішої версії, ви можете скористатися --max-parents
опцією:
$ git rev-list --max-parents=0 HEAD
В іншому випадку ви можете отримати список усіх безкорисних (root) комісій, доступних з поточної гілки, використовуючи:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
git rev-list HEAD | tail -n 1
іgit rev-list --max-parents=0 HEAD
не повертають однакове хеш-значення для мене. Той, хто використовує--max-parents=0
, насправді отримує початкове зобов’язання. Просто подумав, що зазначу, що останній видається більш надійним.