Pertanyaan Bagaimana cara mengambil hash untuk commit saat ini di Git?


Saya ingin mempertahankan (untuk saat ini) kemampuan untuk menghubungkan Git changesets ke workitems yang tersimpan di TFS.

Saya sudah menulis sebuah alat (menggunakan hook dari Git) di mana saya dapat menyuntikkan pengenal tugas kerja ke dalam pesan perubahan Git.

Namun, saya juga ingin menyimpan identifier dari Git commit (hash) ke dalam field TFS workitem kustom. Dengan cara ini saya dapat memeriksa workitem di TFS dan melihat apa yang Git changesets terkait dengan workitem.

Bagaimana saya bisa dengan mudah mengambil hash dari commit saat ini dari Git?


1415
2018-06-04 08:42


asal


Jawaban:


Untuk mengubah referensi objek diperpanjang sewenang-wenang menjadi SHA-1, gunakan secara sederhana git-rev-parse, sebagai contoh

git rev-parse HEAD

atau

git rev-parse --verify HEAD

Sidenote: Jika Anda ingin berubah referensi (ranting dan tag) ke SHA-1, ada git show-ref dan git for-each-ref.


2068
2018-06-04 09:05



Jika Anda hanya ingin hash yang disingkat:

git log --pretty=format:'%h' -n 1

Selanjutnya, menggunakan% H adalah cara lain untuk mendapatkan hash panjang.


324
2017-09-30 23:32



Satu lagi, menggunakan git log:

git log -1 --format="%H"

Ini sangat mirip dengan @outofculture meskipun sedikit lebih pendek.


116
2017-11-21 18:48



Untuk kelengkapan, karena belum ada yang menyarankannya. .git/refs/heads/master adalah file yang hanya berisi satu baris: hash dari commit terbaru master. Jadi Anda bisa membacanya dari sana.

Atau, seperti perintah:

cat .git/refs/heads/master

Memperbarui:

Perhatikan bahwa git sekarang mendukung penyimpanan beberapa ref kepala di file pack-ref, bukan sebagai file di folder / refs / heads /. https://www.kernel.org/pub/software/scm/git/docs/git-pack-refs.html


61
2017-10-16 11:34



Untuk mendapatkan SHA penuh:

$ git rev-parse HEAD
cbf1b9a1be984a9f61b79a05f23b19f66d533537

Untuk mendapatkan versi singkat:

$ git rev-parse --short HEAD
cbf1b9a

58
2017-07-29 20:04



Selalu ada git describe demikian juga. Secara default ini memberi Anda -

john@eleanor:/dev/shm/mpd/ncmpc/pkg (master)$ git describe 
release-0.19-11-g7a68a75

34
2017-08-26 10:43



Lakukan hash

git show -s --format=%H

Hash berkomitmen disingkat

git show -s --format=%h

Klik sini untuk lebih git show contoh.


25
2018-03-27 19:33



Menggunakan git rev-list --max-count=1 HEAD


24
2018-06-04 08:48



Jika Anda perlu menyimpan hash dalam variabel selama skrip, Anda dapat menggunakan

last_commit=$(git rev-parse HEAD)

Atau, jika Anda hanya ingin 10 karakter pertama (seperti github.com)

last_commit=$(git rev-parse HEAD | cut -c1-10) 

18
2017-07-15 16:04



Cara paling ringkas yang saya tahu:

git show --pretty=%h 

Jika Anda ingin jumlah digit hash tertentu yang dapat Anda tambahkan:

--abbrev=n

12
2018-02-07 06:43