-
1. Başlangıç
-
2. Git Basics
-
-
-
-
6. GitHub
-
7. Git Tools
- 7.1 Düzeltme Seçimi
- 7.2 Etkileşimli İzlemleme (Staging)
- 7.3 Saklama ve Silme
- 7.4 Çalışmanızı İmzalama
- 7.5 Arama
- 7.6 Geçmişi Yeniden Yazma
- 7.7 Reset Komutunun Gizemleri
- 7.8 İleri Seviye Birleştirme
- 7.9 Rerere
- 7.10 Git’le Hata Ayıklama
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
-
-
10. Git Internals
3.4 Git Branching - İş Akışı Dallandırması
İş Akışı Dallandırması
Artık dallandırma ve birleştirmenin temellerini öğrendiğinize göre bunlarla ne yapabilirsiniz? Bu bölümde, bu hafif dallandırma ile mümkün olan bazı yaygın iş akışlarını ele alacağız, böylece bunları kendi geliştirme döngünüze dahil edip etmek istemediğinize karar verebilirsiniz.
Uzun Ömürlü (long-running) Dallar
Git, basit bir üçlü birleştirmeyi kullandığı için, bir daldan diğerine uzun bir süre boyunca birden fazla kez birleştirme yapmak genellikle kolaydır. Bu, her zaman açık olan ve geliştirme döngünüzün farklı aşamalarında kullanabileceğiniz birkaç dalınız olabileceği anlamına gelir; bunlardan bazılarını düzenli olarak diğerlerine birleştirebilirsiniz.
Birçok Git geliştiricisi, bu yaklaşımı benimseyen bir iş akışına sahiptir.
Örneğin,
master dallarında hatasız çalışan (muhtemelen yayımlanmış veya yayımlanacak) dengeli (stabil) kodu bulundurabilirler.
Bunun yanında üzerinde çalışmak veya düzgün çalıştığını test etmek amacıyla
develop veya
next adında başka bir paralel dalları daha vardır. Bunların her zaman dengeli olması gerekmez, ancak kararlı (hatasız çalışan) bir duruma geldiğinde
master dalına birleştirilebilir.
Bu dal, daha altta yer alan konu dallarını (önceki
iss53 dalı gibi kısa ömürlü dalları) içeri çekmek için kullanılır; hazır olduklarında yani tüm testleri geçip hata vermediklerinde ana dala (master veya main) birleştirilir.
Aslında bahsettiğimiz şey, işlediğiniz katkı çizgisinde yukarı yönlü hareket eden işaretçilerdir. Dengeli dallar, katkı geçmişinizde daha aşağıda yer alırken, en güncel dallar geçmişin daha yukarısındadır.
Genellikle, bunları iş kuleleri (work silo) olarak düşünmek daha kolaydır, burada katkı grupları tamamen test edildiğinde daha dengeli bir yapıya eklenir.
Bu yaklaşımı farklı denge seviyelerinde sürdürebilirsiniz.
Bazı büyük projeler, henüz
next veya
master dallarına bütünleşmeye hazır olmayan birleşik dalları içeren bir
proposed veya
pu (proposed updates) dalına sahiptir.
Temel fikir, dallarınızın çeşitli denge düzeylerinde olmasıdır; daha kararlı bir düzeye ulaştıklarında, bir üstlerindeki dala birleştirilirler.
Tekrar belirtmek gerekirse, birden çok uzun ömürlü dala sahip olmak zorunlu değildir, ancak özellikle çok büyük veya karmaşık projelerle uğraşılıyorsa genellikle faydalı olur.
Tematik Dallar
Ancak, tematik dallar (topic branch) herhangi bir boyuttaki projelerde faydalıdır. Bir tematik dal, yalnızca belirli bir özellik veya ilgili çalışma için oluşturduğunuz kısa ömürlü bir şubedir. Bu genellikle dalı oluşturmak ve birleştirmek çok maliyetli olduğu için bir sürüm kontrol sistemiyle daha önce muhtemelen yapmadığınız bir şeydir. Ancak Git’te bir günde birkaç kez dal oluşturmak, üzerinde çalışmak, birleştirmek ve silmek yaygındır.
Bunu, oluşturduğunuz
iss53 ve
hotfix dalları ile bir önceki bölümde gördünüz.
Bu dallarda birkaç katkı işlediniz ve onları ana dalınıza birleştirdikten hemen sonra sildiniz.
Bu teknik, hızlı ve tam bir bağlam değişimi sağlar. Çünkü çalışmanız, tüm değişikliklerin o konuyla ilgili olduğu dallara ayrılmış durumda, böylece kod incelemesi ve benzeri durumlarda neler olduğunu görmek daha kolaydır.
Değişiklikleri orada dakikalarca, günlerce veya aylarca tutabilir ve hazır olduklarında (oluşturuldukları veya üzerinde çalışıldıkları sıraya bakılmaksızın) birleştirebilirsiniz.
Örnek olarak,
master dalı üzerinde çalışıyorsunuz, bir sorunu çözmek için
iss91 dalını oluşturuyorsunuz, bir süre üzerinde çalıştıktan sonra aynı şeyi başka bir şekilde ele almak için
iss91v2 adlı ikinci bir dal oluşturuyorsunuz,
master dalına geri dönüyorsunuz ve bir süre orada çalıştıktan sonra, belki de iyi bir fikir olup olmadığından emin olmadığınız bir iş üzerinde çalışmak için oradan da
dumbidea dalını açıyorsunuz.
Katkı geçmişiniz şuna benzer bir görünüme sahip olacak:
Şimdi, diyelim ki sorununuza en iyi çözümün
iss91v2 olduğuna karar verdiniz; ve
dumbidea dalını iş arkadaşlarınıza gösterdiğinizde bunun aslında çok parlak bir fikir olduğu ortaya çıktı.
Orijinal
iss91 dalını (
C5 ve
C6 katkılarını kaybederek) çöpe atabilir ve diğer iki dalı birleştirebilirsiniz.
O zaman geçmişiniz şöyle görünecek:
dumbidea ve
iss91v2 geçmişi
Git projeniz için çeşitli olası iş akışları hakkında daha fazla detaya Distributed Git bölümünde gireceğiz. Bu nedenle bir sonraki projenizde hangi dallandırma şemasını kullanacağınıza karar vermeden önce bahsi geçen bölümü okuduğunuzdan emin olun.
Bunları yaparken önemli olan, tüm bu dalların tamamen yerel olduğunu hatırlamaktır. Dallandırma ve birleştirme işlemleri yaparken, her şey yalnızca kendi Git repo dosyanızda gerçekleşir ve sunucu ile iletişim yoktur."