Kullandığım bazı şube adlandırma kuralları ve bunların nedenleri
Şube adlandırma kuralları
- Şube adlarınızın başında gruplama belirteçleri (kelimeler) kullanın.
- Şubeleri iş akışınız için anlamlı bir şekilde ayırt etmek için kısa kurşun jetonları tanımlayın ve kullanın.
- Şube adlarınızın bölümlerini ayırmak için eğik çizgiler kullanın.
- Önde gelen parça olarak çıplak numaraları kullanmayın.
- Uzun ömürlü dallar için uzun tanımlayıcı isimler kullanmaktan kaçının.
Grup belirteçleri
Şube adlarınızın önünde "gruplandırma" belirteçlerini kullanın.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
Gruplara, iş akışınızla eşleştirmek istediğiniz herhangi bir ad verilebilir. Benim için kısa isimler kullanmayı seviyorum. Daha fazla netlik için okumaya devam edin.
Kısa iyi tanımlanmış tokenler
Şube adlarınızın her birine çok fazla gürültü eklememesi için kısa jetonlar seçin. Bunları kullanıyorum:
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
Bu belirteçlerin her biri, size her dalın iş akışınızın hangi kısmına ait olduğunu söylemek için kullanılabilir.
Bir değişikliğin farklı döngüleri için birden fazla dalınız var gibi görünüyor. Döngülerinizin ne olduğunu bilmiyorum, ancak diyelim ki 'yeni', 'test' ve 'doğrulanmış'. Şubelerinizi, her iki şekilde gruplandırmak ve hangi aşamada olduğunuzu hatırlatmak için her zaman aynı şekilde yazılan bu etiketlerin kısaltılmış sürümleriyle adlandırabilirsiniz.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
Hangi dalların her bir aşamaya ulaştığını hızlıca söyleyebilir ve Git'in desen eşleme seçeneklerini kullanarak bunları kolayca gruplayabilirsiniz.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
Parçaları ayırmak için eğik çizgiler kullanın
Şube adlarında istediğiniz herhangi bir sınırlayıcıyı kullanabilirsiniz, ancak eğik çizgilerin en esnek olduğunu düşünüyorum. Kısa çizgiler veya noktalar kullanmayı tercih edebilirsiniz. Ancak eğik çizgiler, uzaktan kumandayı iterken veya uzaktan kumandayı alırken bazı şube adlarını değiştirmenizi sağlar.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
Benim için, eğik çizgiler kabuğumdaki sekme genişletme (komut tamamlama) için daha iyi çalışıyor. Konfigüre ettiğim şekilde, parçanın ilk karakterlerini yazıp SEKME tuşuna basarak farklı alt parçalara sahip dalları arayabilirim. Zsh bana yazdığım simgenin bir kısmıyla eşleşen dalların bir listesini veriyor. Bu, önceki jetonlar ve gömülü olanlar için geçerlidir.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell, komutun tamamlanması konusunda çok yapılandırılabilir ve aynı zamanda tire, alt çizgi veya noktaları aynı şekilde işlemek için yapılandırabilirim. Ancak yapmamayı tercih ederim.)
Ayrıca birçok git komutunda şubeleri aramanıza izin verir, örneğin:
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Dikkat: Slipp yorumlarda belirtildiği gibi, eğik çizgiler sorunlara neden olabilir. Dallar yol olarak uygulandığından, "foo" adında bir dalınız ve "foo / bar" adında başka bir dalınız olamaz. Bu yeni kullanıcılar için kafa karıştırıcı olabilir.
Çıplak numaralar kullanmayın
Şube adlandırma düzeninizin bir parçası olarak çıplak sayılar (veya onaltılık sayılar) kullanmayın. Referans adının sekme genişletmesi içinde git, bir sayının dal adı yerine sha-1'in bir parçası olduğuna karar verebilir. Örneğin, sorun izleyicim hataları ondalık sayılarla adlandırıyor. Karışıklık önlemek için sadece nnnnn yerine ilgili şubeleri CRnnnnn olarak adlandırıyorum.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
Sadece 15032'yi genişletmeye çalışsaydım git, SHA-1'leri mi yoksa şube adlarını mı aramak istediğimden emin olmazdı ve seçimlerim biraz sınırlı olurdu.
Uzun açıklayıcı adlardan kaçının
Şube listesine bakarken uzun şube isimleri çok yardımcı olabilir. Ancak, dal adları tek satırın çoğunu yiyebileceğinden ve günlüğün görünür kısmını kısalttığından, dekore edilmiş tek satırlık günlüklere bakarken yol alabilir.
Öte yandan, alışılmış şekilde elle yeniden yazmazsanız, uzun şube adları "birleştirme taahhütlerinde" daha yararlı olabilir. Varsayılan birleştirme taahhüdü mesajıdır Merge branch 'branch-name'
. Birleştirme iletilerinin Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
sadece yerine gösterilmesini daha yararlı bulabilirsiniz Merge branch 'fix/CR15032'
.