Git Tag: Menandai Versi Rilis
Cara membuat tag untuk versi rilis, beda lightweight dan annotated tag, dan mengirim tag ke GitHub.
Apa itu tag?
Tag adalah penanda permanen pada satu commit tertentu, biasanya untuk menandai versi rilis: v1.0.0, v2.1.0, dan seterusnya. Berbeda dengan branch yang bergerak maju mengikuti commit baru, tag diam di commit tempat ia dibuat. Setahun kemudian, tag v1.0.0 tetap menunjuk ke commit yang sama persis.
Kapan dipakai? Setiap kali kamu merilis versi penting: rilis aplikasi ke Play Store, deploy ke production, atau menyelesaikan milestone tugas akhir. Tag memberi titik rujukan yang jelas: "versi 1.0 itu yang ini".
Membuat tag
Ada dua jenis tag:
# lightweight: sekadar nama penanda
git tag v1.0.0# annotated: penanda lengkap dengan pesan, tanggal, dan pembuat (DISARANKAN)
git tag -a v1.0.0 -m "Rilis pertama: login dan dashboard selesai"Untuk rilis versi, selalu pakai annotated (-a). Ia menyimpan siapa yang membuat tag, kapan, dan pesan penjelas, mirip seperti commit. Lightweight cukup untuk penanda pribadi sementara.
Menandai commit lama (bukan commit terakhir):
git tag -a v0.9.0 3f2a1b9 -m "Versi beta untuk tester"Melihat dan memeriksa tag
# daftar semua tag
git tag# lihat detail satu tag annotated
git show v1.0.0# daftar tag dengan pesan, urut versi
git tag -nMengirim tag ke GitHub
Jebakan umum: git push tidak mengirim tag secara default. Tag hanya ada di komputermu sampai kamu kirim eksplisit:
# kirim satu tag
git push origin v1.0.0
# kirim SEMUA tag yang belum ada di remote
git push origin --tagsSetelah tag ada di GitHub, ia muncul di halaman Releases dan bisa dipakai untuk mengunduh source code versi tersebut sebagai ZIP.
Menghapus tag yang salah
# hapus tag lokal
git tag -d v1.0.0
# hapus tag yang sudah ter-push (dua langkah)
git push origin :refs/tags/v1.0.0Sintaks push yang kedua memang terlihat aneh (push "kosong" ke ref tag), tapi itulah cara menghapus tag di remote. Lakukan hanya kalau tag-nya memang salah dan belum dipakai orang.
Penomoran versi: Semantic Versioning
Konvensi yang dipakai luas adalah semver: MAJOR.MINOR.PATCH.
- MAJOR (
v2.0.0): perubahan besar yang tidak kompatibel dengan versi lama. - MINOR (`v1.1.0"): fitur baru tapi tetap kompatibel.
- PATCH (
v1.0.1): perbaikan bug kecil.
Konsisten memakai semver membuat pengguna paham seberapa besar perubahan tiap rilis hanya dari nomor versinya.
Catatan teknis: Tag menunjuk ke commit, bukan ke branch. Kalau kamu menghapus branch
main(jangan!), tagv1.0.0tetap menjaga commit-nya tetap ada di database Git. Ini juga alasan tag cocok untuk rilis: ia adalah jangkar permanen yang tidak ikut bergerak atau hilang saat branch diutak-atik.
Ringkasan
Buat tag annotated setiap rilis penting (git tag -a v1.0.0 -m "..."), kirim ke GitHub dengan git push origin --tags, dan ikuti penomoran semantic versioning. Tag adalah cara profesional menandai "versi resmi" proyekmu.