Perintah Git untuk menampilkan HEAD commit id?

250

Perintah apa yang dapat saya gunakan untuk mencetak ID komit HEAD?

Inilah yang saya lakukan dengan tangan:

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

Tetapi saya memerlukan sebuah skrip yang andal dapat mem-pipe output dari beberapa perintah ke file teks sedemikian rupa sehingga file teks tersebut mengandung persis commit commit dari HEAD (tidak lebih atau kurang, dan bukan hanya ref). Adakah yang bisa membantu?

Andrew Arnott
sumber
Saya punya pertanyaan serupa sebelumnya. Dan itu dijawab dengan baik di sini: stackoverflow.com/questions/44994626/…
smwikipedia

Jawaban:

450

Gunakan perintah:

git rev-parse HEAD

Untuk versi singkat:

git rev-parse --short HEAD
Randal Schwartz
sumber
34
Bagi siapa pun yang mencari versi pendek dari hash, git rev-parse --short HEADakan berhasil.
mgarciaisaia
45
git log -1

untuk hanya melakukan id

git log | head -n 1 
cyb0k
sumber
Terima kasih, mudah
eC Droid
15

Utas lama, masih untuk referensi di masa mendatang ... :) bahkan setelah karya

git show-ref --head

secara default HEAD disaring. Berhati-hatilah untuk mengikuti; "kepala" jamak dengan huruf 's' di bagian akhir. Perintah berikut menunjukkan cabang di bawah "ref / kepala"

 git show-ref --heads
Abhijit Mazumder
sumber
4
menggunakan perintah ini dalam repo git (besar), saya mendapatkan dua baris dari git show-ref --headsdan 6290 baris dari git show-ref --head. jadi jika Anda hanya menginginkan satu hash, ini mungkin bukan hasil yang diinginkan.
Remigius Stalder
7

Anda dapat menentukan git logopsi untuk hanya menampilkan komit terakhir -1, dan format yang hanya menyertakan ID komit, seperti ini:

git log -1 --format=%H

Jika Anda lebih suka ID komit yang dipersingkat:

git log -1 --format=%h

JotaBe
sumber
5

Main dengan Bash:

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

Menurut https://git-scm.com/docs/git-log , untuk output yang lebih cantik di konsol Anda dapat menggunakan --decorate argumen dari perintah git-log :

git log --pretty=oneline --decorate

akan dicetak:

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
sumber
0

git rev-parse --abbrev-ref HEAD

Avdhut Mankavale
sumber
1
Ini tidak menunjukkan ID komit, melainkan nama apa pun (seperti cabang atau tag) yang terkait dengan komit. Ini bukan yang diinginkan pengguna asli.
Asfand Qazi
0

Anda dapat menggunakan perintah ini

$ git rev-list HEAD

Anda juga dapat menggunakan headperintah Unix untuk menampilkan n HEADcommit terbaru

$ git rev-list HEAD | head - 2

medmik
sumber
0

Kamu bisa memakai

git log -g branchname

untuk melihat git refloginformasi yang diformat seperti git logoutput

Stuti Verma
sumber