मैं अपनी Git 'मास्टर' शाखा का नाम 'रिलीज़' कैसे करूँ?


116

हम अपनी परियोजनाओं के लिए एक नई नीति लागू करना चाहते हैं कि मास्टर शाखा को अब रिलीज शाखा कहा जाए ताकि यह स्पष्ट हो सके कि शाखा का उपयोग कैसे किया जाना चाहिए। स्वाभाविक रूप से, हमारे पास अभ्यर्थी शाखाओं का विकास और विमोचन होगा।

मैं समझता हूं कि मैं निम्नलिखित का उपयोग करके स्थानीय रूप से मास्टर शाखा का नाम बदल सकता हूं:

git branch -m master release

हालाँकि, यह केवल स्थानीय रूप से है। यहां तक ​​कि अगर मैं इसे दूरस्थ तक बढ़ाता हूं, तो HEAD अभी भी दूरस्थ मास्टर शाखा को इंगित करता है। मैं पूरी तरह से मास्टर शाखा से छुटकारा चाहता हूं और प्रारंभिक क्लोन पर डिफ़ॉल्ट स्थानीय शाखा बनाना चाहता हूं, जारी करना।

इसे कैसे प्राप्त किया जा सकता है?

ऐसा लगता है कि चूंकि उत्पत्ति एक Gitorious सर्वर पर है, इसलिए मुझे मास्टर शाखा को हटाने में त्रुटियां होती हैं। मैं अब यह देखने की कोशिश कर रहा हूं कि क्या इसे बदलना संभव है ताकि डिफ़ॉल्ट शाखा 'रिलीज' हो जाए।


2
हेह, पर्याप्त निष्पक्ष। कम से कम कोशिश करने के लिए लंबे समय के लायक पर्याप्त है।
काइल हेस


कुछ (दूरस्थ) सर्वर "डिफ़ॉल्ट" शाखा को हटाने से इनकार करते हैं (यह गीथब के साथ मामला है)। इसलिए आपको शायद संचालन के समय के लिए एक और "डिफ़ॉल्ट" शाखा चुनने के लिए सर्वर पर जाने की आवश्यकता है ... गिथब पर, यह "शाखा" दृश्य में किया जा सकता है।
जेहोन

1
git branchअब एक --moveध्वज का समर्थन करता है git-scm.com/docs/git-branch#Documentation/git-branch.txt---move
alxndr

जवाबों:


141
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

कृपया ध्यान दें, यदि आप GitHub का उपयोग कर रहे हैं, तो आपको पहले चरण 3 के बाद GitHub पर अपनी "डिफ़ॉल्ट" शाखा को बदलना होगा:

Github.com पर अपनी रिपॉजिटरी में गो सेटिंग्सशाखाएँडिफ़ॉल्ट शाखा जाएँ । इसे जारी करने के लिए बदलें और फिर बाकी चरणों को करें।


3
जब मैं पुश पुश करने का प्रयास करता हूं - ठीक है, मुझे निम्नलिखित त्रुटि मिलती है: वर्तमान शाखा को हटाने पर रोक लगाई गई है
काइल हेस

8
आप github या कुछ समान का उपयोग कर रहे हैं, आपको डिफ़ॉल्ट शाखा को कुछ और बनाने की आवश्यकता है: Matthew-brett.github.com/pydagogue/gh_delete_master.html या बस मास्टर को वहां छोड़ दें और इसे अनदेखा करें।
एडम डाइमिट्रुक 19

हाँ, हमारे पास एक बड़ा उदाहरण है। मुझे देखने दो कि क्या एक विकल्प है।
काइल हेस

यह अच्छा लग रहा है 'मास्टर हुक को हटाने के लिए प्रतिबद्ध कमिट - बिना किसी अच्छे कारण के जिसे मैं देख सकता हूं: /
fge

1
एक ही ! [remote rejected] branch (deletion of the current branch prohibited) Bitbucket साथ क्या होगा। सेटिंग्स स्क्रीन (गियर आइकन के तहत) में "मुख्य रिपॉजिटरी 'को स्विच करें।
dnfehren

13

अपनी मास्टर शाखा देखें

git checkout master

अपनी रिलीज़ शाखा बनाएं और उसमें स्विच करें:

git branch release
git checkout release

सर्वर पर पुश करें

git push origin release

सर्वर पर मास्टर शाखा संदर्भ हटाएं

git push origin :master

स्थानीय मास्टर शाखा हटाएं

git branch -d master

2
मैं इन चरणों के द्वारा बता सकता हूं कि मैं उसी त्रुटि में चला जाऊंगा जैसा कि मैंने ऊपर उल्लेख किया है।
काइल हेस

@KyleHayes यह सर्वर का कॉन्फ़िगरेशन समस्या है। हालांकि यह डिफ़ॉल्ट रूप से इस प्रकार है, बदलने की प्रक्रिया जो या तो उपयोगकर्ता के लिए स्पष्ट होनी चाहिए या स्टैकेवरफ्लो पर आसानी से खोजी जा सकती है
जेफ फेरलैंड

किसी शाखा को हटाने से पहले आपको दूसरी शाखा में जाना होगा।
शहीद हुए

5

नोट: यह उत्तर स्व-होस्टित Git सर्वरों के लिए है जहां आपके पास कमांड लाइन एक्सेस है।

चूंकि remote masterएक ग्राहक से वास्तव में हटाने की कोशिश की अनुमति नहीं है और मुझे लगता है कि मना करने denyDeleteCurrentसे समझ में आता है, मैं उस सेटिंग को बदलना नहीं चाहूंगा।

हालाँकि, मैंने पाया कि यदि आपके पास रिमोट सर्वर पर कमांड लाइन एक्सेस है, तो अपने मास्टर का नाम बदलने का सबसे आसान तरीका है कि आप रिमोट पर सीधे रनेम कमांड को चलाएं।

यह मेरे लिए काम किया:

  1. SSH के माध्यम से दूरस्थ गिट सर्वर पर लॉगिन करें
  2. अपने प्रोजेक्ट के xxx.git फ़ोल्डर पर जाएँ
  3. Daud: git branch -m master release

अब दूरस्थ रिपॉजिटरी releaseअपनी डिफ़ॉल्ट शाखा के रूप में उपयोग करती है और किसी git cloneभी क्लाइंट से रिपॉजिटरी डिफ़ॉल्ट रूप से रिलीज शाखा की जांच करेगी।

यह आपकी आवश्यकताओं को कॉन्फ़िगर करने के लिए एक नंगे भंडार स्थापित करने के बाद भी बहुत उपयोगी है।


3

जैसा कि पहले दूसरों द्वारा कहा गया है, यहां मुद्दा Gitorious है, जो आपको HEAD शाखा को डिफ़ॉल्ट रूप से हटाने की अनुमति नहीं देता है। इस समस्या के आसपास आपके पास दो विकल्प हैं। एक Gitorious सर्वर में लॉग इन करना है (ssh के साथ), फ़ाइल सर्वर पर Git रिपॉजिटरी ढूंढें और जोड़ें:

[receive]
        denyDeleteCurrent = warn

विन्यास के लिए।

एक आसान विकल्प सिर्फ डिफ़ॉल्ट शाखा को बदलना है। Gitorious वेब इंटरफेस में रिपॉजिटरी पर जाएं, "रिपॉजिटरी एडिट करें" दबाएं, और सेट करें "हेड चिट्ठी रेफरी को HEAD को Git रिपॉजिटरी पॉइंट्स इन:" में बदलें। ऐसा करने के बाद आप मास्टर शाखा को हटा सकते हैं।


2

यदि आप GitHub के साथ इस समस्या में भाग लेते हैं , तो शाखा को रिमोट पर हटाने तक चरण करें। यह आपको ऐसा नहीं करने देगा। फिर वेब इंटरफेस में प्रवेश करें और रिपॉजिटरी पर जाएं सेटिंग्सशाखाएँडिफ़ॉल्ट शाखा । इसे नई शाखा में बदलें और बाकी चरणों को करें।


1

आदर्श रूप से, आप ट्रैकिंग सेट अप करना चाहते हैं, इसलिए ऐसा करें:

git push origin HEAD:release
git checkout --track origin/release

अब, क्या आप दूसरों को हटाना चाहते हैं?

git branch -d master
git push origin :master

सरल!


मुझे उसी तरह की त्रुटि मिली जैसे मैंने @ एडम की टिप्पणी में पोस्ट की थी जब मुझे गिट पुश ओरिजिन: मास्टर कमांड मिला था।
काइल हेस

0

चूँकि आपको शाखाओं का नाम बदलने के साथ किया जाता है, releaseदूरस्थ के लिए HEAD को सेट करने के लिए

git remote set-head origin release

फिर masterरिमोट में शाखा को हटाने के लिए , आपको कम से कम गिटहब पर प्रशासक बनना होगा। अधिक जानकारी के लिए कृपया इस पोस्ट को देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.