Dallanma ve en iyi uygulamaları etiketleme


140

Şu anda Pro Git'i okuyarak Git'i kullanmayı öğreniyorum . Şu anda dallanma ve etiketler hakkında öğreniyorum. Benim sorum ne zaman dal kullanmalı ve ne zaman etiket kullanmalıyım?

Örneğin, bir projenin 1.1 sürümü için bir şube oluşturduğumu söyleyin. Bu sürümü bitirip bıraktığımda, sürüm sürümünü işaretlemek için şubeden ayrılmalı mıyım? Yoksa bir etiket mi eklemeliyim? Bir etiket eklersem, sürüm dalını silmem gerekir mi (ana veya başka bir dalla birleştirildiğini varsayarak)?

Yanıtlar:


161

Kısacası: En iyi uygulama daldırmak, sık sık birleştirmek ve daima senkronize tutmaktır .

Kodunuzu ana daldan ayrı bir dalda tutmakla ilgili oldukça net anlaşmalar vardır:

  1. Büyük veya yıkıcı bir değişimin uygulamasını yapmak üzeresiniz
  2. Kullanılmayacak bazı değişiklikler yapmak üzeresiniz
  3. İşe yarayacağından emin olmadığınız bir şey üzerinde deneme yapmak istiyorsunuz
  4. Dışarıya dalmanız söylendiğinde, başkalarının ustalıkta yapması gereken bir şey olabilir.

Başparmak kuralı dallanma sonrasıdır, ana dal ile senkronize olmalısınız. Çünkü nihayetinde ustalaşmak için birleştirmen gerekiyor. Birleşirken büyük bir karmaşık çatışma karmaşasından kaçınmak için sık sık işlem yapmalı, sık sık birleşmelisiniz.

İzlenecek iyi uygulamalar

Başarılı Git dallanma modeli ile Vincent Driessen iyi öneri bulunmaktadır. Bu dallanma modeli size hitap ediyorsa, git'e giden akım uzantısını göz önünde bulundurun . Diğerleri akış hakkında yorum yaptı .

Etiketleme uygulamaları

Bildiğiniz gibi Git, size 1.0-2-g1ab3183 gibi tanıtıcılar verir, ancak bunlar etiket değildir! Etiketleme, git etiketiyle yapılır ve git etiketi kullanılarak oluşturulan etiketler, git'in oluşturduğu iş tanımlayıcıları için temel oluşturur. Başka bir deyişle Git'te dalları etiketlemezsiniz. Etiketliyorsunuz. Bu etiketin yalnızca bir taahhüt için açıklamalı bir işaretçi olduğunu söylemek doğrudur.

Bunu gösteren pratik örneğe bakalım,

                        / - [v1.0]
                       v
---. ---. --- .--- S ---.--- A <- usta
                         \ 
                           \ -.--- B <- test

'S' işini 'v1.0' etiketiyle işaretlenin. Bu taahhüt, hem dalda hem de dalda 'test'tedir. Eğer " git tanımla " "A" ("usta" şubesinin başı ") taahhüdünün üstüne koyarsanız, buna benzer bir şey elde edersiniz v1.0-2-g9c116e9. Eğer 'A' ('test' dalı olarak adlandırılan) taahhüdünün üstüne "git tanım" koyarsanız v1.0-2-g3f55e41, varsayılan git-tanım konfigürasyonunda durum böyle olur. Bu sonucun biraz farklı olduğunu unutmayın. etiketten sonra v1.0-2-g9c116e9sıralanan 9c116e92 sıralı SHA-1 kimliği ile bağlı olduğumuz anlamına gelir v1.0. Etiket yok v1.0-2!

Etiketinizin yalnızca 'master' dalında görünmesini istiyorsanız, 'test' dalının dallanma noktasından sonra yeni bir taahhüt oluşturabilirsiniz (örn. GIT-VERSION-FILE içindeki varsayılan / yedek sürüm bilgilerini güncelleyin). Eğer etiketlemek, örneğin 'v1.0.3' ile 'test' dalında taahhütte bulunursa, sadece 'test'ten görülebilir.

Referanslar

Öğrenecek çok, çok yararlı blog ve yazı buldum. Ancak, profesyonel olarak gösterilenler nadirdir. Bu nedenle, postn önermek istiyorum - Başarılı bir Git dallanma modeli @ nvie. Onun resmini ödünç aldım :)

görüntü tanımını buraya girin


4
1.0-2-g1ab3183, git tarafından elde edilen bilgilerden tarif edilen git tarafından oluşturulan bir tanımlayıcıdır, ancak onu bir tanımlayıcı olarak adlandırmak biraz fazladır. Git, SHA karma ile tanımlar; etiketler ve dallar, gitmeyi yararlı bir şekilde izleyen insan yapılarıdır. Bu nedenle, bir gün bir insanın bir söz için uygun bir yer imi bulmak istediğini düşündüğünüzde bir etiket yapın.
mabraham

2
git evrendeki çok boyutluluğun harika bir örneği. güzel. teşekkürler
Tope

Bu şemada gösterilen şeritlerin bir kısmına birçok projenin gerekmediğine dikkat çekmek önemlidir. Bazı projeler sadece burada geliştirme ve özellik olarak adlandırılan şeye ihtiyaç duyar. Bu genellikle istenildiği zaman konuşlandırılabilecek web uygulamaları için geçerlidir.
usr

37

Aynı anda 2 farklı depo sürümünüz varsa, bir dal kullanılır. Bir etiket, havuzunuzdaki zamanda bir noktayı işaretlemenin bir yoludur.

Yayımlanan bir sürümü işaretlemek için bir etiket eklemelisiniz. Daha sonra bu sürüm için hata düzeltmeleri yapmanız gerekiyorsa, etikette bir dal oluşturacaksınız.

Yalnızca HEAD [ya da başka bir şubeye] tekrar birleştirilen dalları silmek istiyorsunuz.


3
oh ... ve diyelim ki dalın efendi gibi başka bir dalda birleştirildiği anlamına gelir. Her ödeme yaptığımda HEAD hareket ediyor, değil mi?
Kod-Guru

HEAD genellikle bir şubeye işaret eder (HEAD modunda değilseniz), HEAD işaret ettiği şubeyle birlikte hareket eder
LoicAG
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.