मैं " master
" के अलावा अन्य डिफ़ॉल्ट शाखा नाम के साथ Git रिपॉजिटरी कैसे बना सकता हूं ?
आप Git 2.28 (Q3 2020) का उपयोग करेंगे: मौजूदा रिपॉजिटरी में प्राथमिक शाखा का नाम, और नए बनाए गए रिपॉजिटरी में पहली शाखा के लिए उपयोग किया जाने वाला डिफ़ॉल्ट नाम, विन्यास योग्य बनाया गया है, ताकि हम अंततः हार्डकोड से खुद को दूर कर सकें। 'master
'।
और GitHub से 2020 अगस्त से अनुस्मारक :
1 अक्टूबर, 2020 पर, अगर आप नए खजाने के लिए डिफ़ॉल्ट शाखा अपने उपयोगकर्ता, संगठन या उद्यम के लिए नहीं बदला है, यह स्वचालित रूप से बदल जाएगा master
करने के लिएmain
।
आप किसी भी समय इस परिवर्तन से बाहर निकल सकते हैं:
- उपयोगकर्ताओं के लिए, https://github.com/settings/repositories पर पेज पर
- संगठन मालिकों के लिए, पर
https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults
पृष्ठ पर
- एंटरप्राइज़ व्यवस्थापकों के लिए,
https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges
पृष्ठ पर
यह बदलाव कई बदलावों में से एक है, GitHub परियोजनाओं और अनुरक्षकों का समर्थन करने के लिए बना रहा है जो अपनी डिफ़ॉल्ट शाखा का नाम बदलना चाहते हैं।
हमारे द्वारा किए जा रहे परिवर्तनों के बारे में अधिक जानने के लिए, जीथब / नाम बदलना देखें ।
लेकिन खुद पर वापस जाएं: (2.28, Q3 2020) 8oàn TrĐn Công Danh ( sgn
) द्वारा प्रतिबद्ध 508fd8e (29 जून 2020) देखें ।
देखें प्रतिबद्ध 0068f21 , a471214 प्रतिबद्ध , 0cc1b47 प्रतिबद्ध , 32ba12d प्रतिबद्ध , 6069ecc प्रतिबद्ध , f0a96e8 प्रतिबद्ध , प्रतिबद्ध 4d04658 (24 जून 2020), और 489947c प्रतिबद्ध (23 जून 2020) से जोहानिस Schindelin ( dscho
) । डॉन गुडमैन-विल्सन ( ) द्वारा प्रतिबद्ध 8747ebb (24 जून 2020)
देखें । ( जूनियो सी हमानो द्वारा विलय - में -DEGoodmanWilson
gitster
11cbda2 , 06 जुलाई 2020 को प्रतिबद्ध )
init
: नई रिपॉजिटरी के लिए प्रारंभिक शाखा नाम निर्दिष्ट करने की अनुमति दें
साइन-ऑफ-बाय: जोहान्स शिंडलिन
अपनी रिपॉजिटरी की मुख्य शाखा का नाम बदलने के इच्छुक परियोजनाओं और कंपनियों की संख्या बढ़ रही है (देखें इस पर पृष्ठभूमि के लिए मिसलॉव मरोहनीक का ट्वीट )।
नए रिपॉजिटरी के लिए उस शाखा का नाम बदलने के लिए, वर्तमान में एकमात्र तरीका यह है कि स्वचालित रूप से Git के सभी टेम्पलेट निर्देशिका को कॉपी करके, फिर .git/HEAD
फ़ाइल में वांछित डिफ़ॉल्ट शाखा के नाम को हार्ड-कोडिंग किया जाए , और फिर init.templateDir
उन कॉपी किए गए टेम्पलेट फ़ाइलों को इंगित करने के लिए कॉन्फ़िगर किया जाए।
इस प्रक्रिया को बहुत कम बोझिल बनाने के लिए, आइए एक नया विकल्प पेश करें --initial-branch=<branch-name>
:।
git init --initial-branch=hello myLocalRepo
# or
git config --global init.defaultBranch hello
git init myLocalRepo
तथा:
init
: कॉन्फ़िगरेशन के माध्यम से प्रारंभिक शाखा के नाम के लिए डिफ़ॉल्ट सेट करने की अनुमति दें
हेल्प -बाय: जोहान्स शिंडेलिन हेल्प-बाय: डेरिक स्टोले
साइन-ऑफ-बाय: डॉन गुडमैन-विल्सन
हमने --initial-branch=<branch-name>
हार्ड-कोडित की तुलना में एक अलग प्रारंभिक शाखा के साथ एक नए भंडार को शुरू करने की अनुमति देने के लिए केवल कमांड-लाइन विकल्प पेश किया ।
उपयोगकर्ताओं को प्रारंभिक शाखा नाम को अधिक स्थायी रूप से ओवरराइड करने की अनुमति देने के लिए (अर्थात प्रत्येक और प्रत्येक git init
आह्वान के लिए मैन्युअल रूप से नाम निर्दिष्ट किए बिना ), चलो init.defaultBranch
विन्यास सेटिंग का परिचय दें ।
नोट: मर्ज कमिट मैसेज के बारे में 489947 c, के बाद से Git 2.29 में वापस कर दिया गया है, " मैं git के मर्ज कमिट मैसेज को कैसे कस्टमाइज़ कर सकता हूं? " देखें। सेटिंग रहती है।
init.defaultBranch
यह सबमॉड्यूल्स को प्रभावित करता है:
submodule
: रिमोट के HEAD में वापस आ जाना
हेल्प-बाय: फिलिप ब्लेन
साइन-ऑफ-बाय: जोहान्स शिंडलिन
जब remote.<name>.branch
कॉन्फ़िगर नहीं किया जाता है, तो git submodule update
वर्तमान में शाखा नाम का उपयोग करके वापस आ जाता है master
।
एक बहुत बेहतर विचार, हालांकि, रिमोट का उपयोग करना है HEAD
: उचित रूप से हाल ही में Git संस्करण चलाने वाले सभी Git सर्वरों HEAD
पर, मुख्य शाखा को सिम्फ़र पॉइंट्स।
नोट: t7419 प्रदर्शित करता है कि वहाँ ऐसे मामलों का उपयोग किया जा सकता है जो दूरस्थ शाखा में सबमॉड्यूल्स को अपडेट करने की अपेक्षा git submodule update --remote
करते हैं, master
भले ही रिमोट HEAD
दूसरी शाखा को इंगित करता हो।
यकीनन, यह पैच व्यवहार को अधिक सहज बनाता है, लेकिन इस बात की थोड़ी संभावना है कि इससे अस्पष्ट सेटअपों में प्रतिगमन हो सकता है।
फिर भी, इस व्यवहार को ठीक करने के लिए ठीक होना चाहिए, जैसे लंबी संक्रमण अवधि।
git submodule update --remote
आदेश वास्तव में आम नहीं है।
- इस आदेश को चलाने के दौरान वर्तमान गिट का व्यवहार एकमुश्त भ्रमित है, जब तक कि दूरस्थ रिपॉजिटरी की वर्तमान शाखा नहीं है
master
(जिस मामले में प्रस्तावित व्यवहार पुराने व्यवहार से मेल खाता है)।
- यदि कोई उपयोगकर्ता बदले हुए व्यवहार के कारण प्रतिगमन का सामना करता है, तो वास्तव में यह सुधार तुच्छ है: पुराने व्यवहार को बहाल करने के
submodule.<name>.branch
लिए सेटिंग master
।
ध्यान दें कि, Git 2.29 (Q4 2020) के साथ, परीक्षणों contrib/
को हाल के परिवर्तन में समायोजित कर दिया गया है fmt-merge-msg
।
एमिली शफ़र ( ) द्वारा प्रतिबद्ध b87528c (03 अगस्त 2020) देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 83b8250 , 10 अगस्त 2020)nasamuffin
gitster
Revert "contrib
: " subtree
में बदलने के लिए परीक्षण समायोजित करें fmt-merge-msg
"
साइन-ऑफ-बाय: एमिली शफ़र
यह श्रद्धा 508fd8e8baf3e18ee40b2cf0b8899188a8506d07 प्रतिबद्ध है ।
में 6e6029a8 ( fmt-merge-msg
: हम व्यवहार जहां के खिलाफ 'मर्ज के वापस पाने के मर्ज गंतव्य लोप हो करने के लिए फिर से अनुमति देते हैं) master
', डिफ़ॉल्ट रूप से, नहीं शामिल हैं " into 'master'
मर्ज संदेश के अंत में"। इस परीक्षण फिक्स की अब आवश्यकता नहीं है।
इसके अलावा:
Git 2.29 (Q4 2020) के साथ, master
उनसे शब्द ' ' छोड़ने के लिए परीक्षण अपडेट करें।
देखें f33f2d3 प्रतिबद्ध , b6211b8 प्रतिबद्ध (26 सितं, 2020), और 432f5e6 प्रतिबद्ध , 5a0c32b प्रतिबद्ध , 659288c प्रतिबद्ध (21 सितं, 2020) से जोहानिस Schindelin ( dscho
) ।
(द्वारा विलय Junio सी Hamano - gitster
- में प्रतिबद्ध 58138d3 , 05 अक्टूबर 2020)
tests
: master
शाखा नाम की विविधताओं से बचें
साइन-ऑफ-बाय: जोहान्स शिंडलिन
इस शब्द master
में एक भरा हुआ इतिहास है जो नस्लीय अन्याय के निरंतर अनुस्मारक के रूप में कार्य करता है। Git परियोजना को इसे समाप्त करने की कोई इच्छा नहीं है और पहले से ही इसे टालना शुरू कर दिया है।
परीक्षण सूट डिफ़ॉल्ट नाम के अलावा अन्य शाखाओं के लिए इस नाम के रूपांतरों का उपयोग करता है। T3200 के अलावा, जहां हमने इसे पिछले प्रतिबद्ध में संबोधित किया था, उन उदाहरणों को स्वचालित रूप से नाम दिया जा सकता है क्योंकि उन्हें परीक्षण स्क्रिप्ट के बाहर किसी भी बदलाव की आवश्यकता नहीं है, तो चलो ऐसा करते हैं।
यह देखते हुए कि स्पर्श की गई शाखाओं की डिफ़ॉल्ट शाखा के साथ बहुत कम (यदि कुछ भी) करना है, तो हम पूरी तरह से अलग नामकरण योजना का उपयोग करना चुनते हैं: topic_<number>
(यह topic-<number>
इसलिए नहीं हो सकता क्योंकि t5515 test_oid
शब्द के साथ मशीनरी का उपयोग करता है, और यह मशीनरी आंतरिक रूप से शेल चरों का उपयोग करती है। जिनके नाम में डैश नहीं हो सकते)।
यह ट्रिक इस (GNU) सेड इनवोकेशन द्वारा किया गया था:
$ sed -i 's/master\([a-z0-9]\)/topic_\1/g' t/t*.sh
और, अभी भी Git 2.29 के साथ:
देखें प्रतिबद्ध 538228e , प्रतिबद्ध a15ad5d (08 अक्टू 2020) से जोहानिस Schindelin ( dscho
) ।
(द्वारा विलय Junio सी Hamano - gitster
- में प्रतिबद्ध 62564ba , 08 अक्टू 2020)
t1415
: main
रेफ नाम के रूप में उपयोग करने से बचें
साइन-ऑफ-बाय: जोहान्स शिंडलिन
एक पैच श्रृंखला है कि के लिए फॉल-बैक बदल जाएगा की तैयारी में init.defaultBranch
करने के लिए main
, चलो का उपयोग नहीं main
इस परीक्षण लिपि में रेफरी नाम के रूप में।
अन्यथा, ( आदमी ) जो उन रेफ को पकड़ना चाहता है वह भी अप्रत्याशित रूप से पकड़ लेगा ।git for-each-ref ... | grep main
refs/heads/main
चूँकि विचाराधीन रेफ वर्कट्री-लोकल होते हैं (अर्थात प्रत्येक वर्कट्री का अपना जैसा होता है, वैसे ही HEAD
), और चूंकि टेस्ट केस पहले से ही द्वितीयक वर्कट्री का उपयोग करता है second
, जिसे " ", आइए " first
" इन नामों के बजाय " " उपयोग करें ।
इस पर, परीक्षण के शीर्षक को समायोजित करें जो "रेपो" के बारे में बात करते हैं जब उनका मतलब "वर्कट्री" के बजाय होता है।