Kabaca nvie'nin git-akışını takip eden bir git dallanma modeline sahip bir projem var .
Sürüm şubelerimiz SemVer biçiminde adlandırılır , ör.v1.5.2
Bir serbest bırakma dalına üretim için yeşil ışık verildiğinde, dalı master ile birleştirerek, bir etiket uygulayarak ve sonra dalı silerek kapatırız.
Serbest bırakma dalını hemen sildiğimizden, dalı etiketlemek için aynı tanımlayıcıyı kullanıyoruz, ör. v1.5.2
Bir sürüm dalını kapatmak için kullanacağımız komutlar şunlardır:
$ git checkout master
$ git merge v1.5.2
$ git tag -a v1.5.2 -m "Version 1.5.2 - foo bar, baz, etc"
$ git branch -d v1.5.2
$ git branch -dr origin/v1.5.2
$ git push origin :v1.5.2
$ git push
$ git push --tags
Bu, vakaların çoğunda işe yarıyor gibi görünse de, senaryoda başka bir git repo örneğinin (örn. Başka bir geliştirici makinesi veya hazırlama ortamı) v1.5.2 şubesinin yerel bir kasası olduğu soruna neden oluyor.
git push origin :v1.5.2
Komut uzak şube siler, ancak tüm depolarındakii şubesinin sürümünü (varsa) silmez.
Bu v1.5.2
, bu depolarda ödeme yapmayı denerken belirsiz bir referans sağlar :
$ git checkout v1.5.2
warning: refname 'v1.5.2' is ambiguous.
Bu, dallar için farklı bir sözdizimi kullanmadan önlenebilir mi , örn. release-v1.5.2
, Veya v1.5.2-rc
?
Yoksa kaçınılmaz mıdır ve bu nedenle silinmiş bir dalla aynı ada sahip bir etiket oluşturmak temelde kötü bir fikir midir?
git checkout
merminiz, önemli bir referans olduğunda etiketi şube üzerinde kontrol edeceğini belirtiyor , ancak bu gördüğüm davranış değil, ref: gist.github.com/tommarshall/9376724 . Bu git'in daha modern bir versiyonunda değişen bir şey mi?gitconfig
Bu davranışı elde etmek için ayarlayabileceğim bir bayrak var mı ?