Tag membekukan satu titik riwayat menjadi nama yang mudah diingat, dan kebingungannya biasanya bukan soal sintaks melainkan soal pilihan: lightweight atau annotated, dan kapan tag perlu dikirim ke remote. Chapter ini merangkum seluruh perintah tag menjadi tabel contekan tiga kolom — perintah, fungsi, contoh — terbagi tiga kelompok: membuat, memeriksa, membagikan dan menghapus, ditutup tabel kecil perbandingan dua jenis tag. Satu kejutan yang perlu diingat sejak awal: git push biasa tidak mengirim tag — tag bepergian lewat perintahnya sendiri (Berbagi Tag ke Remote ).

Membuat Tag #

Penamaan rilis sebaiknya mengikuti Semantic Versioning — v1.0.0, bukan selera — agar urutan dan makna angkanya terbaca konsisten (Semantic Versioning ).

PerintahFungsiContoh
git tagMendaftar seluruh tag di repository.git tag
git tag <nama>Membuat lightweight tag pada commit saat ini (Lightweight Tag ).git tag v0.1.0
git tag <nama> <titik>Menempel tag pada commit atau titik riwayat lain.git tag v0.9.0 b15a549
git tag -a <nama> -m "<pesan>"Membuat annotated tag lengkap dengan pesan rilis (Annotated Tag ).git tag -a v1.0.0 -m "Rilis katalog pertama"
git tag -s <nama> -m "<pesan>"Membuat annotated tag yang ditandatangani kunci GPG/SSH (Menandatangani Commit dan Tag ).git tag -s v1.0.0 -m "Rilis pertama yang ditandatangani"
git tag -l "<pola>"Menyaring daftar tag dengan pola.git tag -l "v1.*"

Memeriksa Tag #

Sebelum sebuah tag dipakai sebagai patokan rilis, verifikasinya penting: jenis objeknya, isinya, dan keberadaannya di remote.

PerintahFungsiContoh
git show <tag> --no-patchMembaca metadata tag dan commit yang ditunjuknya tanpa diff (Membuat dan Menghapus Tag ).git show v1.0.0 --no-patch
git tag -v <nama>Memverifikasi tanda tangan sebuah annotated tag.git tag -v v1.0.0
git cat-file -t <tag>Menjawab jenis objek di balik nama: tag atau langsung commit (Blob, Tree, Commit, dan Tag ).git cat-file -t v1.0.0
git describe --tagsMenamai posisi HEAD relatif tag terdekat — favorit skrip rilis (Git dalam CI/CD ).git describe --tags
git ls-remote --tags <remote>Membaca daftar tag di remote dari luar, tanpa fetch.git ls-remote --tags origin

Membagikan dan Menghapus #

Tag lokal belum menjadi tag milik tim sampai dikirim; penghapusannya pun dua lapis — lokal dan remote — yang harus dikerjakan masing-masing.

PerintahFungsiContoh
git push origin <tag>Mengirim satu tag ke remote.git push origin v1.0.0
git push origin --tagsMengirim seluruh tag sekaligus.git push origin --tags
git fetch --tagsMenarik seluruh tag dari remote.git fetch --tags
git push origin --delete <tag>Menghapus tag dari sisi remote.git push origin --delete v0.1.0
git tag -d <nama>Menghapus tag lokal.git tag -d v0.8.0

Dua catatan melengkapi tabel. Pertama, git fetch biasa sebenarnya sudah ikut membawa tag yang menunjuk ke commit yang sedang diunduh — perilaku auto-follow — sementara --tags memaksa pengambilan semua tag, termasuk yang menempel di commit di luar jalur fetch. Kedua, penghapusan selalu dua lapis: git tag -d hanya membersihkan lokal, git push origin --delete hanya membersihkan remote; satu nama bisa saja tetap hidup di sisi yang satunya lagi bila keduanya tidak dijalankan.

Lightweight atau Annotated #

Pilihan jenis tag dirangkum satu tabel; penalaran lengkapnya dibaca di Konsep Tag . Aturan praktisnya: apapun yang akan dilihat orang lain — rilis publik, titik rilis di remote — layak annotated, karena pesan, pembuat, dan tanggalnya tercatat sebagai objek penuh yang bisa diverifikasi.

AspekLightweightAnnotated
Bentuknyapenunjuk polos berisi hash commitobjek tag penuh: pesan, pembuat, tanggal
Jawaban git cat-file -tcommittag
Verifikasi tanda tangantidak tersediagit tag -v <nama>
Peruntukanpenanda pribadi sementararilis yang dibagikan

Keluarga perintah inti Git kini lengkap di enam chapter contekan pertama section ini. Peralatan berikutnya bukan perintah baru melainkan pengaturan di baliknya: seluruh opsi git config yang membentuk perilaku default — dirangkum di Cheatsheet git config .