Tag beranotasi (annotated tag) adalah bentuk tag yang menyimpan dirinya sebagai objek tersendiri di dalam basis data Git, lengkap dengan nama penanda, waktu, dan pesan. Bentuk inilah yang direkomendasikan untuk tag rilis, karena keterangan rilis perlu tersimpan bersama penandanya, bukan hanya di catatan tim. Topik ini membahas pembuatan tag beranotasi, isi objeknya, perbandingannya dengan tag ringan, dan pengenalan penandatanganan.
Membuat tag beranotasi#
Opsi -a membuat tag beranotasi, dan opsi -m menyertakan pesannya sama seperti pada commit.
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"rm -rf /tmp/lab-tag-a
mkdir /tmp/lab-tag-a
cd /tmp/lab-tag-a
git init -b main
git config user.name "Budi"
git config user.email "[email protected]"
printf "Aplikasi.\n" > app.txt
git add app.txt
git commit -m "Versi awal"
printf "Aplikasi.\nLaporan siap.\n" > app.txt
git commit -am "Fitur laporan"
git tag -a v1.0.0 -m "Rilis 1.0.0: fitur laporan siap dipakai"
git tag -nInitialized empty Git repository in /tmp/lab-tag-a/.git/
[main (root-commit) c4e4710] Versi awal
1 file changed, 1 insertion(+)
create mode 100644 app.txt
[main 488952e] Fitur laporan
1 file changed, 1 insertion(+)
v1.0.0 Rilis 1.0.0: fitur laporan siap dipakaiKeluaran git tag -n menampilkan pesan tag di samping namanya, dan itulah perbedaan yang paling terasa pada daftar tag: tag ringan menampilkan baris kosong pada kolom pesan karena memang tidak menyimpannya. Apabila -m ditiadakan, Git membuka editor pesan sebagaimana pada commit, sehingga pesan yang panjang pun nyaman ditulis.
Isi objek tag#
Tag beranotasi tersimpan sebagai objek tag dengan hash miliknya sendiri, sehingga hash yang disimpan penunjuk refs/tags/v1.0.0 bukan lagi hash commit, melainkan hash objek tag yang menunjuk commit itu. Isi objeknya dapat dilihat melalui git show.
git show v1.0.0 --no-patchtag v1.0.0
Tagger: Budi <[email protected]>
Date: Sun Nov 1 09:00:00 2026 +0700
Rilis 1.0.0: fitur laporan siap dipakai
commit 488952e502d856496c5948a671109cb350a0a85b
Author: Budi <[email protected]>
Date: Sun Nov 1 09:00:00 2026 +0700
Fitur laporanKeluaran ini memuat dua lapisan: objek tag dengan penandanya dan waktunya di bagian atas, kemudian commit yang ditunjuknya di bagian bawah. Identitas penanda tag mengikuti konfigurasi user.name dan user.email yang sama dengan commit, dan waktunya adalah waktu penandaan dilakukan.
Kedua hash dapat dilihat berdampingan untuk memastikan lapisannya.
cat .git/refs/tags/v1.0.0
git show --no-patch --format="%H" v1.0.05000e72944800d8cdce9d4119d2ce4cd0856b36c
tag v1.0.0
Tagger: Budi <[email protected]>
Rilis 1.0.0: fitur laporan siap dipakai
488952e502d856496c5948a671109cb350a0a85bHash pertama milik objek tag, sedangkan hash kedua milik commit yang diperoleh setelah Git mengikuti penunjuk tag sampai commitnya. Pada tag ringan kedua hash itu justru sama, dan perbedaan inilah yang membuat tag beranotasi dapat menyimpan metadata tanpa mengubah commit yang ditandainya.
Kapan memakai bentuk mana#
Kedua bentuk tag memenuhi kebutuhan yang berbeda, dan tabel berikut merangkum pemilihan yang lazim.
| Aspek | Tag ringan | Tag beranotasi |
|---|---|---|
| Penyimpanan | berkas penunjuk saja | objek tag tersendiri |
| Penanda, waktu, pesan | tidak ada | ada dan tersimpan |
| Cocok untuk | penanda sementara milik pribadi | tag rilis dan penanda publik |
Rekomendasi umumnya lurus: gunakan tag beranotasi untuk penanda yang akan dilihat orang lain, karena penanda dan pesannya ikut tersalin bersama repository, dan pakai tag ringan untuk penanda sementara yang hanya penting bagi diri sendiri.
Pengenalan penandatanganan#
Tag beranotasi dapat ditandatangani dengan GPG melalui opsi -s menggantikan -a, sehingga identitas penandanya dapat diverifikasi, bukan sekadar dibaca. Pemverifikasi dilakukan dengan git tag -v nama-tag yang memeriksa tanda tangan terhadap kunci publik penandanya.
# tidak-dijalankan
# penandatanganan memerlukan kunci GPG yang telah disiapkan pada mesin masing-masing
git tag -s v1.1.0 -m "Rilis 1.1.0"
git tag -v v1.1.0Penandatanganan menambah satu jaminan di atas metadata: keterangan bahwa tag itu benar-benar dibuat pemegang kunci tersebut. Proyek yang menyalurkan rilisnya luas memakai fitur ini, dan kuncinya disiapkan sekali per mesin pengembang. Untuk memulai, tag beranotasi biasa sudah memenuhi kebutuhan tim yang tidak menuntut verifikasi kriptografi.
Ringkasan#
- Tag beranotasi tersimpan sebagai objek tag berisi penanda, waktu, dan pesan, dengan opsi
-adan-muntuk membuatnya. - Hash pada penunjuk tag beranotasi milik objek tag, sedangkan hash milik commit muncul setelah Git mengikuti penunjuknya.
- Tag beranotasi direkomendasikan untuk penanda publik seperti rilis, dan tag ringan untuk penanda sementara pribadi.
- Opsi
-smenandatangani tag dengan GPG dan-vmemverifikasinya, dengan kunci yang disiapkan pada mesin masing-masing.
Referensi#
- Git Basics - Tagging — Pro Git — bagian Annotated Tags dan Signing Your Work pada Pro Git.
- git-tag — Git Documentation
— rujukan opsi
-a,-s, dan-v.