Diberikan nama cabang lokal / jarak jauh, bagaimana saya bisa mendapatkan hash dari komit yang ditunjuk oleh cabang ini?
91
Perintahnya git rev-parse
adalah temanmu, misal:
$ git rev-parse development
17f2303133734f4b9a9aacfe52209e04ec11aff4
... atau untuk cabang pelacakan jarak jauh:
$ git rev-parse origin/master
da1ec1472c108f52d4256049fe1f674af69e785d
Perintah ini umumnya sangat berguna, karena dapat mengurai salah satu cara dalam menentukan nama cabang git
, seperti:
git rev-parse master~3
git rev-parse HEAD@{2.days.ago}
... dll.
foo
, Anda dapat melakukan:git log --pretty=format:'%H'
def BranchHash = sh "git rev-parse ${BRANCH-NAME}
saya mendapatkan:fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
. apa yang salah?Hash disimpan di bawah
.git/refs/
, misalnya.git/refs/heads/master
Tetapi gunakan
git rev-parse
secara terprogram seperti yang disarankan oleh Mark Longair karena lebih aman.sumber
Jangan lupa bahwa sejak Git 2.19 (Q2 2018), Git mempersiapkan transisi dari hash SHA1 ke SHA2: lihat " Mengapa Git tidak menggunakan SHA yang lebih modern? "
Dengan Git 2.25 (Q1 2020),
git rev-parse
berkembang dan mencerminkan kemungkinan hash baru itu.Lihat commit fa26d5e , commit cf02be8 , commit 38ee26b , commit 37ab8eb , commit 0370b35 , commit 0253e12 , commit 45e2ef2 , commit 79b0edc , commit 840624f , commit 32a6707 , komit 440bf91 , komit 0b408ca , komit 2eabd38 (28 Oktober 2019), dan komit 1bcef51 , komit ecde49b (05 Okt 2019) oleh brian m. carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 28014c1, 10 Nov 2019)The
git rev-parse
Dokumentasi sekarang termasuk:Dengan Git 2.29 (Q4 2020), Anda dapat memastikan format apa yang harus Anda gunakan untuk membaca komit hash dari cabang (atau objek lain).
Lihat komit e023ff0 , komit 4feb562 , komit 8a06d56 , komit c49fe07 , komit 02a32db , komit ceaa4b3 , komit eff45da , komit b5b46d7 , komit c5aecfc , komit e74b606 , komit 439d3a1 , komit 6c2adf8 , komit de5737c , komit e0a646e , komit 6ff6a67 , komit 831279d , komit b6e5005 , commit 287bb3a , commit 22f1824 , commit db00af9 ,komit 2197f87 , komit c0b65ea , komit d62607d , komit d482c23 , komit 866be6e , komit 4bacb6dkomit 7187eb1 , komit 98de0b2 , komit a5587b8 , komit 66b6d43 , , komit 252a4ee , komit 368f3cb , komit abe3db1 , komit 08fbc5d , komit 11b6961 , komit 9e3bd8a , komit d827bce , commit 094a685 (29 Jul 2020) oleh brian m. carlson ( ) .
bk2204
Lihatcommit 800e6a7(29 Jul 2020) oleh Johannes Schindelin (
dscho
) .(Digabung oleh Junio C Hamano -
gitster
- dalam commit e0ad957 , 11 Agustus 2020)git config
sekarang termasuk di halaman manualnya :Untuk memperjelas, dengan Git 2.29 (Q4 2020), penambahan dukungan SHA-256 baru-baru ini ditandai sebagai eksperimental dalam dokumentasi.
Lihat commit ff233d8 (16 Agustus 2020) oleh Martin Ågren (
none
) .(Digabung oleh Junio C Hamano -
gitster
- di commit d1ff741 , 24 Agustus 2020)git
sekarang termasuk di halaman manualnya :object-format-disclaimer
sekarang termasuk di halaman manualnya :Git 2.29 (Kuartal 4 2020) yang sama memastikan bahwa "
git clone
" ( man ) akan berfungsi saat satu klon dari repositori SHA-1, sementaraGIT_DEFAULT_HASH
disetel untuk menggunakan SHA-256.Sebelum 2.29, itu menghasilkan repositori yang tidak dapat digunakan yang setengahnya mengklaim sebagai repositori SHA-256 dengan objek dan referensi SHA-1.
Ini telah diperbaiki.
Lihat commit 47ac970 (20 Sep 2020) oleh brian m. carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit b28919c , 29 Sep 2020)sumber