Git etiketleri, sürümler ve değişiklik günlüğü: sürümleri temiz yayımlamak
Kısaca: Etiketler (tags) belirli commit’leri bir sürüm olarak işaretler, sürümler (releases) bunları açıklamalar ve dosyalarla paketler ve bir değişiklik günlüğü (changelog) kullanıcılara neyin değiştiğini anlatır.
Biraz daha ayrıntılı: Bir yazılım sürümü, kodun benzersiz adlandırılmış bir durumudur. Bunun için Git etiketleri, sürüm numaraları (SemVer) ve sürüm notları kullanılır.
Ayrıntılı
Etiketler
git tag v1.4.0 # hafif etiket
git tag -a v1.4.0 -m "Version 1.4.0" # açıklamalı etiket (yazar, tarih, iletiyle)
git push origin v1.4.0 # etiketi yayımla (etiketler otomatik itilmez)
git tag -l 'v1.*' # etiketleri listele
git checkout v1.4.0 # bu duruma bak
git tag -d v1.4.0 # yerelde silEtiketler değişmez işaretlerdir (yayımlandıktan sonra taşımayın). Sürümler için açıklamalı (ve mümkünse imzalı, -s) etiketler kullanın.
Sürüm numaraları
Anlamsal sürümleme: MAJOR.MINOR.PATCH (örneğin 2.3.1): uyumsuz değişiklikler için MAJOR, yeni, uyumlu özellikler için MINOR, hata düzeltmeleri için PATCH. Ön sürümler: 2.0.0-beta.1. Alternatif CalVer (2026.03). Numara etikette, paket dosyasında (package.json, pyproject.toml) ve sürümde görünür.
Sürümler ve değişiklik günlüğü
GitHub/GitLab’da bir sürüm (release), bir etiketten açıklama, indirme dosyaları (artifacts) ve otomatik üretilen notları olan bir sayfa oluşturur. Bir CHANGELOG.md (“Keep a Changelog” biçimi) sürüme göre Added, Changed, Deprecated, Removed, Fixed, Security olarak yapılandırılır ve geliştiricilere değil kullanıcılara hitap eder (commit listesini öylece yapıştırmayın). Conventional Commits ve araçlarla (release-please, semantic-release, changesets) sürümler ve değişiklik günlüğü otomatik üretilebilir.
Yöntem ve ipuçları
- Testler yeşil, sürümü yükseltin, değişiklik günlüğünü genişletin.
- Commit edin, etiketi koyun, push edin.
- CI artifact’leri derler (paketler, konteyner imajları) ve yayımlar (npm, PyPI, Docker registry), ideal olarak yeniden üretilebilir ve imzalı.
- Sürüm notlarını yazın, uyumsuz değişiklikleri açıkça vurgulayın ve geçiş notları verin.
- Hatalarda etiketi taşımak yerine yeni bir yama sürümü.
Web siteleri için commit başına bir dağıtım çoğunlukla yeter; başkalarının kurduğu kütüphaneler, uygulamalar ve araçlar için etiketler/sürümler önemlidir.
Ayrıca bak: Anlamsal sürümleme, Conventional Commits, CI/CD ardışık düzeni, README dosyası