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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git tag | Mendaftar 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.
| Perintah | Fungsi | Contoh |
|---|---|---|
git show <tag> --no-patch | Membaca 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 --tags | Menamai 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.
| Perintah | Fungsi | Contoh |
|---|---|---|
git push origin <tag> | Mengirim satu tag ke remote. | git push origin v1.0.0 |
git push origin --tags | Mengirim seluruh tag sekaligus. | git push origin --tags |
git fetch --tags | Menarik 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.
| Aspek | Lightweight | Annotated |
|---|---|---|
| Bentuknya | penunjuk polos berisi hash commit | objek tag penuh: pesan, pembuat, tanggal |
Jawaban git cat-file -t | commit | tag |
| Verifikasi tanda tangan | tidak tersedia | git tag -v <nama> |
| Peruntukan | penanda pribadi sementara | rilis 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
.