Kurs
Bir makine öğrenimi mühendisiyim. Öğrendiğim en temel şeylerden biri, temiz sürümleme sadece iyi bir pratik değildir. Tekrarlanabilirlik ve iş birliği için kritiktir.
Git etiketleri, kodda kararlı durumları işaretlemek için gereklidir. Yayın oluşturmanıza, önceki bir sürüme geri dönmenize veya CI/CD iş akışlarıyla entegre olmanıza yardımcı olur. İster kod, ister veri, ister yeni makine öğrenimi modelleri üzerinde çalışın, arka planınız veya rolünüz ne olursa olsun Git etiketleri hayatınızı kolaylaştırır.
Bu eğitimde, Git etiketlerini uygulamak ve ustalaşmak için bilmeniz gereken her şeyi açıklayacağım. Git etiketlerinin geliştirme hayatınızı nasıl basitleştirebileceğini görmeye hazır mısınız? Hadi başlayalım.
>Önce Git hakkında hızlı bir genel bakış istiyorsanız, şunu okumanızı öneririm: Yeni Başlayanlar için GitHub ve Git Eğitimi.
Git Etiketi Nedir?
Git etiketi, bir projenin geçmişindeki belirli noktaları işaretlemenin basit ama güçlü bir yoludur. Bunu, belirli bir commit’e “Bu önemli.” diyen bir yapışkan not koymak gibi düşünün.
Git etiketleri genellikle yayın sürümlerini, kilometre taşlarını veya kod tabanınızdaki kararlı kontrol noktalarını etiketler. Belirli bir commit’e sabit referanslardır ancak yeni bir commit oluşturmazlar. Bir commit’i etiketledikten sonra, etiketi manuel olarak taşımadığınız veya silmediğiniz sürece o etiket ona bağlı kalır.

İki Git etiketi olan master dalı. Görsel: yazar.
İki ana etiket türü vardır:
- Hafif (lightweight) etiketler: Basit yer imleri gibidir. Ek bilgi olmadan belirli bir commit’i işaret ederler. Hızlı ve oluşturması kolaydır; genellikle yerel referans veya hızlı hata ayıklama için kullanılırlar, ancak yazar veya mesaj gibi meta verileri saklamazlar.
- Açıklamalı (annotated) etiketler: Daha sağlamdır ve tam Git nesneleri olarak depolanır. Etiketleyenin adı, e-posta adresi, tarihi ve mesajı gibi bilgileri içerir; hatta kriptografik olarak imzalanabilir. Açıklamalı etiketler, yayın noktalarını işaretlemek veya bir ekiple etiketleri paylaşmak için idealdir.
>Git hakkında daha fazla bilgi edinmek için Foundations of Git veya Intermediate Git kurslarına göz atmanızı öneririm.
Git Etiketleri Nasıl Oluşturulur ve Yönetilir
Git etiketleri oluşturmak ve yönetmek basittir. Farklı etiket türlerini ve nasıl uygulanacaklarını parçalara ayıralım.
- Git etiketlerini kullanmak için, makinenizde Git yüklü olmalıdır. Git Yükleme Eğitiminde Git kurulumuyla ilgili daha fazla bilgi okuyabilirsiniz.
- Bir diğer önkoşul da başlatılmış bir Git deposuna sahip olmaktır. Daha fazlasını Bir Git Deposunu Nasıl Başlatır ve Kurarsınız yazısında okuyabilirsiniz.
Hafif etiketler oluşturma
Hafif bir etiket, bir commit’e işaretçi gibidir. Meta veri içermez; yalnızca etiket adını ve işaret ettiği commit’i içerir.
Bir tane oluşturmak için şunu çalıştırabilirsiniz:
git tag v1.0.0
Bu komut, mevcut HEAD commit’ini işaret eden hafif bir etiket oluşturur.
Alternatif olarak, commit karmasını (hash) vererek belirli bir commit için etiket oluşturabilirsiniz:
git tag v1.0.0 5c5fc06
Hafif etiketler, özellikle tek kişilik geliştirme projelerinde veya geçici çalışmalarda hızlı, yerel referanslar için kullanışlıdır.
Açıklamalı etiketler oluşturma
Açıklamalı etiketler, etiketleyenin adı, e-postası, tarihi ve mesajı gibi daha fazla bilgi depolar. Tam Git nesneleri olarak saklanırlar ve resmi yayınları veya kilometre taşlarını etiketlemek için idealdir.
Bir tane oluşturmak için şunu çalıştırabilirsiniz:
git tag -a v1.0.0 -m "Release version 1.0.0"
Bu komut, v1.0.0 adlı açıklamalı bir etiket ve "Release version 1.0.0" mesajını oluşturur.
Belirli bir commit’i de etiketleyebilirsiniz:
git tag -a v1.0.0 5c5fc06 -m "Tagging older commit"
Açıklamalı etiketler daha iyi dokümantasyon sunar, CI/CD araçlarıyla iyi entegre olur ve ekiplerin geçmişi daha şeffaf biçimde takip etmesine yardımcı olur.
Belirli commit’leri etiketleme
Bazen, en son olmayan bir commit’i etiketlemeniz gerekir. Bunun için önce commit geçmişini getirip ardından etiket oluşturmak istediğiniz commit karmasını seçebilirsiniz.
Commit karmasını almak için şunu çalıştırabilirsiniz:
git log --oneline
Listeden commit karmasını kopyalayın ve ardından:
git tag -a v1.0.0 <commit-hash> -m "Tagging v1.0.0 release"
Oluşturulan etiketleri doğrulama
Depodaki tüm etiketleri listelemek için şunu kullanın:
git tag
Etiketleri filtrelemek isterseniz, örneğin yalnızca v1. ile başlayan sürümler için şunu kullanın:
git tag -l 'v1.*'
Belirli bir etiket hakkında ayrıntıları görmek için şunu çalıştırın:
git show v1.0.0
Git Etiketleriyle Çalışma
Git etiketlerini oluşturduktan sonra, geliştirme veya yayın iş akışınızın bir parçası olarak onları paylaşmanız, güncellemeniz veya etkileşimde bulunmanız gerekebilir. Bu bölüm, yerel ve uzak depolarda etiketlerle çalışmanın en yaygın görevlerini kapsar.
Etiketleri uzak depoya gönderme (push)
git push çalıştırdığınızda etiketler otomatik olarak uzak depolara gönderilmez. Bunları açıkça göndermeniz gerekir.
Tek bir etiketi göndermek için:
git push origin v1.0.0
Tüm etiketleri bir kerede göndermek için:
git push --tags
Etiketlerin gönderilmesi, ekip arkadaşlarınızın veya CI/CD hatlarının onlara erişebilmesi için gereklidir. Etiketler, özellikle sürümlü yayın akışlarını izleyen dağıtım tetikleyicileri olarak da sıklıkla kullanılır. Dalların nasıl push ve pull yapılacağı hakkında daha fazlasını Git Push ve Pull Eğitiminde okuyabilirsiniz.
Etiketleri silme
Bir etiketi silmek isterseniz, bunu yerelde ve uzakta yapabilirsiniz.
Yerelde silmek için şunu çalıştırın:
git tag -d v1.0.0
Aynı etiketi uzak depodan silmek için:
git push origin --delete v1.0.0
Etiketi doğrudan GitHub veya GitLab’ın web arayüzünden de silebilirsiniz.
>GitHub hakkında daha fazla bilgi edinmek ve nasıl kullanacağınızı öğrenmek isterseniz, GitHub Foundations ve GitHub Concepts kurslarını öneririm.
Etiketleri checkout etmek
Depoyu belirli bir etiketin durumuna şu komutla alabilirsiniz:
git checkout v1.0.0
Ancak bu, sizi kopuk (detached) HEAD durumuna geçirir. Bu, artık bir dalda olmadığınız ve yeni commit’lerin herhangi bir dala ait olmayacağı anlamına gelir; açıkça bir dal oluşturmadığınız sürece:
git checkout -b hotfix-v1.0.0
Belirli bir etiketi checkout etmek, mevcut geliştirme dalınızı etkilemeden belirli bir sürümü hata ayıklamak veya incelemek için yardımcı olur. Ayrıca, örneğin bir Docker imajı oluşturulması gerektiğinde, üretim uygulamanızı belirli bir sürümden derlemek için de kullanılır.
Commit’ten sonra etiketleme
Bir etiketi güncellemeniz gerekirse, örneğin farklı bir commit’e taşımak veya mesajını değiştirmek için, basitçe zorlayarak güncelleme yapabilirsiniz:
git tag -f -a v1.0.0 5c5fc06 -m "retagging"
Ayrıca commit karması olmadan da aynı komutu çalıştırarak etiketi mevcut HEAD’e ekleyebilirsiniz.
>Geleneksel Git komutlarına hızlı bir genel bakışa ihtiyacınız varsa, Tam Git Cheat Sheet'i öneririm.
Git Etiketlerini Kullanma İçin En İyi Uygulamalar
Etiketleri nasıl oluşturup yöneteceğini bilmek bir şeydir, onları etkili biçimde kullanmak başka bir şey. Akıllıca kullanıldığında, etiketler iş akışınızı, dokümantasyonunuzu ve ekip iletişiminizi güçlendirebilir.
Sürümleme için etiket kullanma
Etiketler, anlamsal sürümleme için mükemmeldir ve yayınlarınızı sürümlemenin önerilen yoludur.
Anlamsal sürümlemede sürüm numaralarınız MAJOR.MINOR.PATCH biçimini izler; örneğin v.1.2.0.
MAJOR daha kapsamlı ve geriye dönük uyumsuz değişiklikler içindir; MINOR yeni eklenen özellikler içindir ve PATCH hata düzeltmeleri içindir.
Anlamsal sürümleme çok güçlüdür. Değişikliklerin kapsamını net biçimde iletir, geliştiricilerin uyumluluğu anlamasına yardımcı olur ve CI/CD tetikleyicileri gibi otomatik araçlarla iyi çalışır.
Tutarlı bir adlandırma kuralına bağlı kalın. Bir desen seçin (ör. her zaman v öneki) ve tüm sürümlerinizde bunu izleyin.
Yayınları etiketleme
Etiketler, projenizdeki önemli yayın aşamalarını işaretlemek için idealdir. Düşünebileceğiniz bazı yararlı etiket türleri şunlardır:
v1.0.0-alpha: Dahili test sürümüv1.0.0-beta: Genel beta sürümüv1.0.0: Nihai üretim sürümü
Bu aşamaları etiketleyerek, test derlemelerini başkalarıyla daha kolay paylaşabilir, önceki sürümlere geri dönebilir ve üretim dağıtımlarının temiz bir geçmişini tutabilirsiniz.
Sürece uygun bağlam ve dokümantasyon yakalamak için yayınlarda açıklamalı etiketler kullanarak bunu daha da iyileştirebilirsiniz.
Etiketlerin aşırı kullanımından kaçınma
Etiketler ne kadar kullanışlı ve güçlü olursa olsun, aşırı kullanıldığında işe yaramaz hale gelebilirler. Etiketler yalnızca projenizin geçmişindeki anlamlı noktaları işaretlemelidir: kararlı sürümler, büyük özellik tamamlanmaları, kilometre taşları veya son teslim tarihlerii gibi.
Her commit’i etiketlemek deponuzu kalabalıklaştırır ve hızlı gezinme amacını boşa çıkarır. Temiz ve amaçlı tutun!
İyi bir kural olarak, dağıtmayacak veya duyurmayacaksanız muhtemelen bir etikete ihtiyaç yoktur.
Git Etiketlerinde Sorun Giderme
En iyi uygulamalara rağmen, özellikle ekiplerle çalışırken veya uzak depolarla eşzamanlarken Git etiketleriyle çalışırken bazen sorunlarla karşılaşırsınız. Bu bölüm en yaygın sorunların nasıl ele alınacağını kapsar.
Kopuk HEAD durumunu yönetme
Şunu kullanarak belirli bir etiketi checkout ettiğinizde:
git checkout v1.0.0
Git, daha önce belirtildiği gibi sizi kopuk bir HEAD durumuna geçirir. Bu, bir dalda olmadığınız anlamına gelir; dolayısıyla bir commit yaparsanız, bu commit herhangi bir dala ait olmayacak ve işlem yapmadığınız sürece kaybolabilir.
Bunu, aşağıdakini çalıştırarak bir dal oluşturarak düzeltebilirsiniz:
git checkout -b hotfix-v1.0.0
Artık bir dal üzerinde çalışıyorsunuz ve her zamanki gibi commit yapıp değişiklikleri gönderebilirsiniz.
Etiket çakışmalarını çözme
Aynı etiket adı yerelde ve uzakta farklı commit’lere işaret ettiğinde çakışmalar oluşabilir.
Bu genellikle bir etiketi yerelde silip yeniden oluşturduğunuzda veya bir başkası bir etiketi zorla push ettiğinde meydana gelir.
Bu sorunu çözmek için iki seçenek vardır.
Seçenek 1: Etiketi silin ve yeniden push edin
git tag -d v1.0.0
git push origin --delete v1.0.0
git tag -a v1.0.0 -m "Corrected tag"
git push origin v1.0.0
Seçenek 2: Güncellenen etiketi zorla push edin
Yerel etiketinizin doğru olduğundan eminseniz ve izniniz varsa:
git push origin -f v1.0.0
Ancak bu seçeneğe dikkat edin; çünkü zorla push etmek başkalarının değişikliklerinin üzerine yazabilir. Yalnızca emin olduğunuzda veya ekibinizle görüştükten sonra kullanın.
Sonuç
Git etiketleri, akıllıca kullanıldığında oldukça güçlü bir araçtır. Bu eğitimde şunları öğrendiniz:
- Git etiketlerinin ne olduğu ve ne zaman kullanılacağı
- Depomuzda Git etiketlerinin nasıl uygulanacağı
- Git etiketlerini kullanma için en iyi uygulamalar
- Git etiketleriyle çalışırken yaygın sorunların nasıl giderileceği
İster makine öğrenimi modelleri yayımlıyor, ister bir veri ürününe güncellemeler gönderiyor, ister bir ekip içinde iş birliği yapıyor olun, etiketler projenizin zaman çizelgesindeki anlamlı anları işaretlemenize yardımcı olur. İşleri düzenli, tekrarlanabilir ve geri almak veya dağıtmak açısından kolay tutarlar.
Ben Git etiketlerine sürekli güveniyorum. Hatalar ortaya çıktığında kararlı sürümlere geri dönmeme veya otomatik CI/CD iş akışlarını tetiklememe olanak tanıyarak bana saatler kazandırıyorlar. Üretim derlemeleri için Docker imajlarını etiketlemek ve sürümlemek için kullanıyorum; gönderdiğim her şeyin tamamen izlenebilir ve belgelenmiş olmasını sağlıyorum.
Öyleyse bugün etiketleri kullanmaya başlayın ve Git iş akışınızı dönüştürün!
SSS
Git etiketi ne için kullanılır?
Bir Git etiketi, genellikle yayınlar veya önemli kilometre taşları için, bir deponun geçmişindeki belirli noktaları işaretler.
Hafif ve açıklamalı Git etiketleri arasındaki fark nedir?
Hafif etiketler bir commit’e basit referanslardır; açıklamalı etiketler ise yazar, tarih ve mesaj gibi meta verileri saklar.
Git’te bir etiketi checkout ettiğimde ne olur?
“Kopuk HEAD” durumuna girersiniz; bu da bir dalda olmadığınız ve bir dal oluşturmadıkça yaptığınız commit’lerin bir dala kaydedilmeyeceği anlamına gelir.
Bir Git etiketi nasıl oluştururum?
Hafif etiket için git tag <tagname> veya açıklamalı etiket için git tag -a <tagname> -m "message" kullanın.
Git etiketleri CI/CD iş akışlarında yaygın olarak kullanılır mı?
Evet. Etiketler, özellikle sürüm etiketleme yapıldığında CI/CD hatlarında otomatik derleme veya dağıtımları tetikleyebilir.
Elektrik Mühendisliği, makine öğrenimi ve programlama alanlarında sağlam bir temele sahip bir Bulut Mühendisiyim. Kariyerime görüntü sınıflandırmaya odaklanan bilgisayarla görü alanında başladım, ardından MLOps ve DataOps’a geçiş yaptım. MLOps platformları kurma, veri bilimcilerini destekleme ve makine öğrenimi iş akışlarını kolaylaştırmak için Kubernetes tabanlı çözümler sunma konularında uzmanım.

