Comando Git para exibir o ID de confirmação HEAD?

250

Que comando posso usar para imprimir o ID de confirmação do HEAD?

Isto é o que estou fazendo à mão:

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

Mas preciso de um script que possa canalizar de maneira confiável a saída de algum comando para um arquivo de texto, de modo que o arquivo de texto contenha exatamente o ID de confirmação do HEAD (nada mais ou menos, e não apenas uma referência). Alguém pode ajudar?

Andrew Arnott
fonte
Eu tenho uma pergunta semelhante antes. E foi bem respondida aqui: stackoverflow.com/questions/44994626/…
smwikipedia

Respostas:

450

Use o comando:

git rev-parse HEAD

Para a versão curta:

git rev-parse --short HEAD
Randal Schwartz
fonte
34
Para quem procura a versão curta do hash, git rev-parse --short HEADfuncionará.
precisa saber é o seguinte
45
git log -1

apenas para confirmar o ID

git log | head -n 1 
cyb0k
fonte
Obrigado, é fácil
eC Droid
15

Tópico antigo, ainda para referência futura ... :) mesmo após trabalhos

git show-ref --head

por padrão, HEAD é filtrado. Tenha cuidado ao seguir; "cabeças" plurais com um 's' no final. O comando a seguir mostra ramificações em "refs / heads"

 git show-ref --heads
Abhijit Mazumder
fonte
4
usando esses comandos em um repositório git (grande), recebo duas linhas git show-ref --headse 6290 linhas git show-ref --head. portanto, se você quiser apenas um único hash, talvez esse resultado não seja o pretendido.
Remigius Stalder
7

Você pode especificar git logopções para mostrar apenas o último commit -1, e um formato que inclua apenas o ID do commit, como este:

git log -1 --format=%H

Se você preferir o ID de confirmação reduzido:

git log -1 --format=%h

JotaBe
fonte
5

Jogue com o Bash:

git show HEAD | sed -n 1p | cut -d " " -f 2
Ali Moreno
fonte
1

De acordo com https://git-scm.com/docs/git-log , para obter uma saída mais bonita no console, você pode usar o argumento --decorate do comando git-log :

git log --pretty=oneline --decorate

irá imprimir:

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
Ilya Slyisarenko
fonte
0

git rev-parse --abbrev-ref HEAD

Avdhut Mankavale
fonte
1
Isso não mostra o ID da confirmação, mas os nomes (como ramificações ou tags) associados à confirmação. Não é isso que o usuário original queria.
Asfand Qazi 8/11
0

Você pode usar este comando

$ git rev-list HEAD

Você também pode usar o headcomando Unix para mostrar os n HEADcommits mais recentes, como

$ git rev-list HEAD | head - 2

medmik
fonte
0

Você pode usar

git log -g branchname

para ver git refloginformações formatadas como a git logsaída

Stuti Verma
fonte