Tag: Menandai Rilis & Versi
Memberi nama permanen pada commit penting dengan tag ringan dan beranotasi, plus semantic versioning.
Tag = label permanen pada commit
Branch bergerak maju setiap kali kamu commit. Tag tidak: ia menempel tetap pada satu commit, cocok untuk menandai titik penting — terutama rilis: v1.0.0. Kapan pun nanti kamu bisa kembali melihat kode persis seperti saat rilis itu.
Dua jenis tag
| Jenis | Perintah | Isi |
|---|---|---|
| Lightweight | git tag v0.1.0 | Hanya nama yang menunjuk ke commit |
| Annotated (disarankan untuk rilis) | git tag -a v1.0.0 -m "Rilis pertama" | Objek tersendiri: penulis, tanggal, pesan (bisa ditandatangani) |
Perintah penting
git tag # daftar tag
git tag v0.1.0 HEAD~2 # beri tag pada commit lama
git tag -a v1.0.0 -m "Rilis pertama" # tag beranotasi di HEAD
git show v1.0.0 # detail tag + commit yang ditunjuk
git tag -d v0.1.0 # hapus tag lokal
git push origin v1.0.0 # kirim satu tag ke remote
git push origin --tags # kirim semua tag
Tag tidak ikut terkirim saat git push biasa; kamu harus mengirimnya secara eksplisit.
Semantic Versioning (SemVer)
Format MAJOR.MINOR.PATCH, mis. 2.4.1:
- MAJOR naik bila ada perubahan yang merusak kompatibilitas.
- MINOR naik bila menambah fitur baru yang kompatibel.
- PATCH naik untuk perbaikan bug kecil.
Awalan v adalah konvensi. Versi pra-rilis: v1.0.0-beta.1.
Menggunakan tag
git switch --detach v1.0.0 # melihat kode saat rilis (detached HEAD)
git switch -c hotfix-1.0.1 v1.0.0 # buat branch perbaikan dari titik rilis
git log v1.0.0..HEAD --oneline # apa saja yang berubah sejak rilis
GitHub mengubah tag menjadi halaman Releases yang bisa berisi catatan rilis dan berkas unduhan.
Detached HEAD
Saat kamu checkout tag/commit (bukan branch), HEAD "terlepas". Aman untuk melihat-lihat; tetapi commit baru di keadaan ini tidak menempel pada branch mana pun. Jika ingin melanjutkan pekerjaan, buat branch: git switch -c nama-baru.