Varsayılan şube adı " master
" dışında olan bir Git deposu nasıl oluşturabilirim ?
Git 2.28'i (Q3 2020) kullanırsınız: mevcut depolardaki birincil dalın adı ve yeni oluşturulan depolarda ilk şube için kullanılan varsayılan ad yapılandırılabilir hale getirilir, böylece sonunda kendimizi sabit kodlulardan ayırabiliriz ' master
'.
Ve GitHub'dan Ağustos 2020'den hatırlatma :
Eğer kullanıcı, kuruluş veya işletme için yeni depolar için varsayılan dalı değişmemiştir eğer 1 Ekim 2020 tarihinde, otomatik olarak değişecektir master
içinmain
.
Bu değişikliği istediğiniz zaman devre dışı bırakabilirsiniz:
- Kullanıcılar için, https://github.com/settings/repositories sayfasında
- Kuruluş sahipleri için
https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults
sayfada
- Kurumsal yöneticiler için,
https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges
sayfada
Bu değişiklik, GitHub'ın varsayılan şubelerini yeniden adlandırmak isteyen projeleri ve bakımcıları desteklemek için yaptığı birçok değişiklikten biridir.
Yaptığımız değişiklikler hakkında daha fazla bilgi edinmek için bkz. Github / yeniden adlandırma .
Ancak Git'in kendisine geri dönelim: (2.28, Q3 2020) Bkz . Đoàn Trần Công Danh ( sgn
) tarafından 508fd8e (29 Haziran 2020 ) .
Bkz 0068f21 işlemek , a471214 işlemek , 0cc1b47 işlemek , 32ba12d işlemek , 6069ecc işlemek , f0a96e8 işlemek , 4d04658 tamamlama (muhtemelen 2020 Haziran 24) ve 489947c tamamlama ile (23 Haziran 2020) Johannes Schindelin ( dscho
) .
Bkz. 8747ebb (24 Haziran 2020), Don Goodman-Wilson ( DEGoodmanWilson
) .
( Junio C Hamano - gitster
- tarafından birleştirildicommit 11cbda2 , 06 Tem 2020)
init
: yeni depo için ilk şube adını belirlemeye izin ver
İmza: Johannes Schindelin
Depolarının ana şube adını değiştirmek isteyen artan sayıda proje ve şirket var (örneğin, Mislav Marohnić'in bununla ilgili arka plan için tweet'ine bakın).
Yeni havuzlar için bu dal adını değiştirmek için, şu anda bunu otomatik olarak yapmanın tek yolu Git'in tüm şablon dizinini kopyalamak, ardından istenen varsayılan dal adını .git/HEAD
dosyaya sabit kodlamak ve ardından init.templateDir
kopyalanan şablon dosyalarını gösterecek şekilde yapılandırmaktır .
Bu süreç çok daha az külfetli hale getirmek için, en yeni bir seçenek tanıştırayım: --initial-branch=<branch-name>
.
git init --initial-branch=hello myLocalRepo
# or
git config --global init.defaultBranch hello
git init myLocalRepo
Ve:
init
: yapılandırma aracılığıyla ilk şube adı için varsayılanı ayarlamaya izin ver
Yardımcı : Johannes Schindelin Yardımcı: Derrick Stolee
İmza: Don Goodman-Wilson
--initial-branch=<branch-name>
Yeni bir depoyu, sabit kodlu olandan farklı bir ilk dal ile başlatmaya izin vermek için komut satırı seçeneğini ekledik.
Kullanıcıların ilk şube adını daha kalıcı bir şekilde geçersiz kılmalarına izin vermek için (yani adı her git init
çağrı için manuel olarak belirtmek zorunda kalmadan ), init.defaultBranch
yapılandırma ayarını tanıtalım.
Not: Birleştirme tamamlama mesajı hakkındaki commit 489947c , o zamandan beri Git 2.29'da geri alındı , " git'in birleştirme tamamlama mesajını nasıl özelleştirebilirim? " Konusuna bakın . Ayar olarak kalır.
init.defaultBranch
Bu, alt modülleri etkiler:
submodule
: uzak dalın eksik olması durumunda uzaktaki HEAD'e geri dönün
Yardımcı: Philippe Blain
İmza: Johannes Schindelin
Ne zaman remote.<name>.branch
yapılandırılmamış, git submodule update
şu anda şube adını kullanarak geri düşer master
.
Bununla birlikte, çok daha iyi bir fikir, uzaktan kumandayı kullanmaktır HEAD
: makul ölçüde yeni Git sürümlerini çalıştıran tüm Git sunucularında, symref HEAD
ana dalı işaret eder.
Not: t7419 , uzak dal başka bir dala işaret etse bile , alt modülleri uzak şubeye güncellemeyi bekleyen kullanım durumlarının olabileceğini gösterir .
Muhtemelen, bu yama davranışı daha sezgisel hale getiriyor, ancak bunun belirsiz kurulumlarda gerilemelere neden olma ihtimali çok az. git submodule update --remote
master
HEAD
Öyle olsa bile, bu davranışı daha uzun bir geçiş dönemi gibi bir şey olmadan düzeltmekte sorun yoktur:
git submodule update --remote
Komut gerçekten yaygın değildir.
- Güncel seyahatseverlerin Git davranışı uzaktan deponun cari şube sürece bu komut düpedüz, kafa karıştırıcı çalıştırırken olduğu
master
(ki bu durumda önerilen davranış eski davranışı eşleşir).
- Bir kullanıcı nedeniyle değişen davranışına bir gerileme karşılaşırsa, düzeltme aslında oldukça basittir: ayar
submodule.<name>.branch
için master
eski davranışı eski haline getireceğiz.
Git 2.29 (Q4 2020) ile testlerin contrib/
son değişikliğe göre ayarlandığını unutmayın fmt-merge-msg
.
Bkz. Commit b87528c (03 Ağu 2020) by Emily Shaffer ( nasamuffin
) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster
- içinde 83b8250 tamamlama 2020 10 Eyl)
Revert "contrib
:: subtree
testi değiştirmek için ayarlayın fmt-merge-msg
"
İmza: Emily Shaffer
Bu, 508fd8e8baf3e18ee40b2cf0b8899188a8506d07 işlemini geri döndürür .
In 6e6029a8 ( fmt-merge-msg
: Biz 'karşı birleştirmeleri davranışını geri almak birleştirme hedef tekrar çıkarılmasına izin verir) master
varsayılan olarak, yapma,' "include into 'master'
birleştirme mesajın sonunda". Bu test düzeltmesine artık gerek yoktur.
Ayrıca:
Git 2.29 (Q4 2020) ile testleri master
, onlardan ' ' kelimesini çıkaracak şekilde güncelleyin .
Bkz f33f2d3 işlemek , b6211b8 taahhüt (26 Eylül 2020) ve 432f5e6 taahhüt , 5a0c32b işlemek , 659288c taahhüt tarafından (21 Eylül 2020) Johannes Schindelin ( dscho
) .
(Tarafından Birleştirilmiş - Junio C Hamano gitster
- içinde 58138d3 taahhüt 2020 05 Eki)
tests
: master
şube adının varyasyonlarından kaçının
İmza: Johannes Schindelin
Terim master
, ırksal adaletsizliğin sürekli bir hatırlatıcısı olarak hizmet eden yüklü bir geçmişe sahiptir. Git projesinin bunu sürdürme arzusu yok ve şimdiden kaçınmaya başladı.
Test paketi, varsayılanın dışındaki şubeler için bu ismin varyasyonlarını kullanır. Önceki işlemde bu konuyu ele aldığımız t3200 dışında, bu örnekler otomatik bir şekilde yeniden adlandırılabilir çünkü test komut dosyası dışında herhangi bir değişiklik gerektirmezler, öyleyse hadi bunu yapalım.
Dokunulan dalların varsayılan dal ile çok az ilgisi (varsa) olduğu için, tamamen ayrı bir adlandırma şeması kullanmayı seçiyoruz: topic_<number>
(bu, topic-<number>
t5515 terimiyle makineyi kullandığı ve test_oid
makine dahili olarak kabuk değişkenlerini kullandığı için olamaz , adları tire içeremez).
Bu numara şu (GNU) sed çağırma ile gerçekleştirildi:
$ sed -i 's/master\([a-z0-9]\)/topic_\1/g' t/t*.sh
Ve yine Git 2.29 ile:
Bkz. 538228e commit , commit a15ad5d (08 Ekim 2020) by Johannes Schindelin ( dscho
) .
(Tarafından Birleştirilmiş - Junio C Hamano gitster
- içinde 62564ba taahhüt 2020 08 Eki)
t1415
: main
referans adı olarak kullanmaktan kaçının
İmza: Johannes Schindelin
İçin sonbahar-geri değiştirecek bir yama serisi için hazırlık init.defaultBranch
için main
, en kullanmayın let main
bu test komut ref adı olarak.
Aksi takdirde, bu referansları yakalamak isteyen ( adam ) da beklenmedik bir şekilde yakalar .git for-each-ref ... | grep main
refs/heads/main
Söz konusu referanslar çalışma ağacı-yerel olanlar olduğu için (yani her çalışma ağacının kendine ait olduğu gibi HEAD
) ve test senaryosu zaten " second
" adlı ikincil bir çalışma ağacı kullandığından, first
bunun yerine bu referanslar için " " adını kullanalım .
Bunun üzerindeyken, bunun yerine bir "çalışma ağacı" anlamına geldiklerinde bir "repo" dan bahseden test başlıklarını ayarlayın.