Sunting : Jakub Narębski memiliki lebih banyak git-fu. Perintah berikut yang jauh lebih sederhana berfungsi dengan sempurna:
git describe --tags
(Atau tanpa --tags
jika Anda telah memeriksa tag beranotasi. Tag saya ringan, jadi saya perlu - tag.)
jawaban asli berikut:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
Seseorang dengan lebih banyak git-fu mungkin memiliki solusi yang lebih elegan ...
Ini memanfaatkan fakta bahwa git-log
melaporkan log mulai dari apa yang Anda periksa. %h
mencetak hash yang disingkat. Kemudian git describe --exact-match --tags
temukan tag (ringan atau beranotasi) yang persis cocok dengan komit.
The $()
sintaks di atas mengasumsikan Anda menggunakan bash atau mirip.
git describe
akan menampilkan nama tag jika Anda tepat pada tag (beranotasi), atau<tag>-<n>-g<shortened sha-1>
jika tidak, di mana<n>
jumlah komit sejak itu<tag>
.--exact-match
jawaban saya beberapa detik sebelum komentar Anda. Senang mengetahui bahwa Anda dapat menghapusnya dan masih mendapatkan info bagus dari input fuzzier.git rev-parse HEAD
adalah solusi yang lebih baik daripadagit log -n1 --pretty='%h'
... tetapi mengapa Anda tidak bisa begitu saja menulisHEAD
(atau tidak sama sekali, sebagaigit describe
standar untuk HEAD)?Ini berhasil untuk saya
git describe --tags --abbrev=0
sumber
Tampilkan semua tag pada KEPALA saat ini (atau komit)
sumber
git describe
adalah perintah porselen , yang harus Anda hindari:http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
Sebaliknya, saya menggunakan:
sumber
^0
untuk komit yang sesuai dengan tag (misalnya, untuk tag1.0
itu output1.0^0
). Apakah ada cara untuk mendapatkan output Git saja1.0
, atau haruskah saya menggunakan sed untuk ini?Ketika Anda melihat tag, Anda memiliki apa yang disebut "kepala terpisah" . Biasanya, komit Git's HEAD adalah pointer ke cabang yang saat ini telah Anda periksa. Namun, jika Anda memeriksa sesuatu selain cabang lokal (tag atau cabang jarak jauh, misalnya) Anda memiliki "kepala terpisah" - Anda tidak benar-benar berada di cabang mana pun. Anda tidak boleh membuat komitmen saat berada di kepala yang terpisah.
Tidak masalah untuk memeriksa tag jika Anda tidak ingin melakukan pengeditan. Jika Anda hanya memeriksa isi file, atau Anda ingin membangun proyek Anda dari sebuah tag, tidak apa-apa untuk
git checkout my_tag
dan bekerja dengan file, selama Anda tidak membuat komitmen . Jika Anda ingin mulai memodifikasi file, Anda harus membuat cabang berdasarkan tag:akan membuat cabang baru bernama
my_tag_branch
mulai darimy_tag
. Aman untuk melakukan perubahan pada cabang ini.sumber
git log --decorate
Ini akan memberi tahu Anda referensi apa yang menunjuk ke komit yang sedang diperiksa.
sumber