Команда Git для отображения идентификатора коммита HEAD?

251

Какую команду можно использовать для распечатки идентификатора коммита HEAD?

Это то, что я делаю вручную:

$ cat .git/HEAD
ref: refs/heads/v3.3
$ cat .git/refs/heads/v3.3
6050732e725c68b83c35c873ff8808dff1c406e1

Но мне нужен скрипт, который может надежно передать вывод какой-либо команды в текстовый файл, так что текстовый файл содержит в точности идентификатор фиксации HEAD (ничего более или менее, а не просто ссылку). Кто-нибудь может помочь?

Эндрю Арнотт
источник
У меня подобный вопрос раньше. И это было хорошо ответили здесь: stackoverflow.com/questions/44994626/…
smwikipedia

Ответы:

451

Используйте команду:

git rev-parse HEAD

Для короткой версии:

git rev-parse --short HEAD
Рэндал Шварц
источник
34
Для тех, кто ищет короткую версию хэша, git rev-parse --short HEADподойдет.
mgarciaisaia
45
git log -1

только для фиксации id

git log | head -n 1 
cyb0k
источник
Спасибо, это просто
eC Droid
15

Старая тема, еще для дальнейшего использования ... :) даже следующие работы

git show-ref --head

по умолчанию HEAD отфильтровывается. Будьте осторожны, следуя, хотя; множественные "головы" с 's' в конце. Следующая команда показывает ветки под "refs /глав"

 git show-ref --heads
Абхиджит Мазумдер
источник
4
используя эти команды в (большом) git-репо, я получаю две строки git show-ref --headsи 6290 строк git show-ref --head. так что если вам нужен только один хеш, это может дать не тот результат, который вы ожидаете.
Ремигиус
7

Можно указать git logпараметры, чтобы отображать только последний коммит, -1и формат, который включает только идентификатор коммита, например:

git log -1 --format=%H

Если вы предпочитаете сокращенный идентификатор фиксации:

git log -1 --format=%h

JotaBe
источник
5

Играть с Bash:

git show HEAD | sed -n 1p | cut -d " " -f 2
Али Морено
источник
1

Согласно https://git-scm.com/docs/git-log , для более приятного вывода в консоли вы можете использовать аргумент --decorate команды git-log :

git log --pretty=oneline --decorate

напечатает:

2a5ccd714972552064746e0fb9a7aed747e483c7 (HEAD -> master) New commit
fe00287269b07e2e44f25095748b86c5fc50a3ef (tag: v1.1-01) Commit 3
08ed8cceb27f4f5e5a168831d20a9d2fa5c91d8b (tag: v1.1, tag: v1.0-0.1) commit 1
116340f24354497af488fd63f4f5ad6286e176fc (tag: v1.0) second
52c1cdcb1988d638ec9e05a291e137912b56b3af test
Илья Слизаренко
источник
0

git rev-parse --abbrev-ref HEAD

Авдхут Манкавале
источник
1
Это не показывает идентификатор фиксации, а скорее любые имена (такие как ветви или теги), связанные с фиксацией. Это не то, что хотел оригинальный пользователь.
Асфанд Кази
0

Вы можете использовать эту команду

$ git rev-list HEAD

Вы также можете использовать команду headUnix для отображения последних n HEADкоммитов, таких как

$ git rev-list HEAD | head - 2

medmik
источник
0

Ты можешь использовать

git log -g branchname

чтобы увидеть git reflogинформацию, отформатированную как git logвывод

Стути Верма
источник