Bu, dökümanın eski bir sürümüdür!
İçindekiler
Git-Flow
Projelerimde git'in gücünü bu iş akışı ile ortaya çıkarıyorum.
Amerikayı yeniden keşfetmeye gerek yok, Vincent Driessen'ın A successful Git branching model mimarisini saf Git komutlarıyla git-flow eklentisi yüklemeden kullanıyorum.
Sıfırdan Repo Kurulumu
# 1. Repoyu başlat git init # 2. Main dalının oluşabilmesi için ilk (boş) commit'i at. git commit --allow-empty -m "İlk commit: Proje başlatıldı" # 3. Develop dalını oluştur ve o dala geç. git checkout -b develop # 4. Uzak sunucuyu (GitHub, GitLab vb.) bağla. git remote add origin <uzak_sunucu_url> # 5. Her iki dalı da uzak sunucuya gönder. git push -u origin master git push -u origin develop
Dallar
Ana Dallar
Bu iki dal projenin kalbidir ve asla silinmezler. Üzerlerinde doğrudan düzenleme yapılmaz.
| master | her zaman canlıdaki en stabil kodu temsil eder. |
|---|---|
| develop | Bir sonraki sürüm için hazırlanan en güncel geliştirme kodlarını içerir. Tüm yeni özellikler günün sonunda buraya merge edilir. |
Özellik Dalları
Yeni bir özellik veya eklenti geliştirirken kullanılır.
Nereden dallanır: develop
Nereye birleşir: develop
İsimlendirme Kuralı: feature/ozellik-adi
Komutlar:
Yeni özellik dalı oluşturma ve geçiş yapma:
git checkout -b feature/kullanici-girisi develop
(…kodlarınızı yazın, commit'lerinizi atın…)
Özelliği bitirip develop'a birleştirme: (Not: –no-ff bayrağı dalın geçmişini korur ve commit'leri tek bir düğümde toplar. Çok önemlidir!)
git checkout develop git merge –no-ff feature/kullanici-girisi
Dalı silme ve güncel develop'u sunucuya gönderme:
git branch -d feature/kullanici-girisi git push origin develop
3. Sürüm Dalları (Release Branches)
Yeni bir canlı sürüm (production release) hazırlığı için kullanılır. Yeni özellik eklenmez, sadece ufak hatalar giderilir (bugfix) ve versiyon (v1.2.0 vb.) numaraları güncellenir.
Nereden dallanır: develop
Nereye birleşir: master VE develop
İsimlendirme Kuralı: release-* (Örn: release/1.2.0)
Komutlar:
Sürüm dalı oluşturma:
git checkout -b release/1.2.0 develop
(…versiyon numaralarını güncelleyin, son ufak hataları çözün ve commit'leyin…)
Sürümü bitirip master'a birleştirme ve etiketleme (Tag):
git checkout master git merge –no-ff release/1.2.0 git tag -a 1.2.0 -m “Sürüm 1.2.0 yayında”
Yapılan ufak hata düzeltmelerini develop'a da yansıtma:
git checkout develop git merge –no-ff release/1.2.0
Dalı silme ve tüm değişiklikleri (tag ile birlikte) sunucuya gönderme:
git branch -d release/1.2.0 git push origin master git push origin develop git push –tags
4. Acil Yama Dalları (Hotfix Branches)
Canlı ortamdaki (production) kritik bir hatayı çok acil çözmek gerektiğinde kullanılır. Sıradaki büyük sürümü bekleyemeyeceğiniz durumlar içindir.
Nereden dallanır: master (Hatalı olan canlı versiyondan)
Nereye birleşir: master VE develop
İsimlendirme Kuralı: hotfix-* (Örn: hotfix/1.2.1)
Komutlar:
Acil yama dalı oluşturma:
git checkout -b hotfix/1.2.1 master
(…kritik hatayı düzeltin, versiyonu güncelleyin ve commit'leyin…)
Yamayı bitirip master'a birleştirme ve etiketleme (Tag):
git checkout master git merge –no-ff hotfix/1.2.1 git tag -a 1.2.1 -m “Kritik hata çözümü: Sepet çökmesi düzeltildi”
Yamayı develop'a da yansıtma (Gelecek sürümlerde hata tekrar etmesin diye):
git checkout develop git merge –no-ff hotfix/1.2.1
Dalı silme ve tüm değişiklikleri (tag ile birlikte) sunucuya gönderme:
git branch -d hotfix/1.2.1 git push origin master git push origin develop git push –tags
UCH Viki'den alınmıştır. https://wiki.ulascemh.com/doku.php?id=tr:cs:git:flow
