gittagrilisversioningMahir3 mnt baca

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:

bash
# lightweight: sekadar nama penanda
git tag v1.0.0
bash
# 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):

bash
git tag -a v0.9.0 3f2a1b9 -m "Versi beta untuk tester"

Melihat dan memeriksa tag

bash
# daftar semua tag
git tag
bash
# lihat detail satu tag annotated
git show v1.0.0
bash
# daftar tag dengan pesan, urut versi
git tag -n

Mengirim tag ke GitHub

Jebakan umum: git push tidak mengirim tag secara default. Tag hanya ada di komputermu sampai kamu kirim eksplisit:

bash
# kirim satu tag
git push origin v1.0.0

# kirim SEMUA tag yang belum ada di remote
git push origin --tags

Setelah tag ada di GitHub, ia muncul di halaman Releases dan bisa dipakai untuk mengunduh source code versi tersebut sebagai ZIP.

Menghapus tag yang salah

bash
# hapus tag lokal
git tag -d v1.0.0

# hapus tag yang sudah ter-push (dua langkah)
git push origin :refs/tags/v1.0.0

Sintaks 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!), tag v1.0.0 tetap 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.