2013-07-09 5 views
5

मेरे पास मेरे व्यक्तिगत गिट सर्वर पर होस्ट किया गया एक प्रोजेक्ट है (यह गिटहब पर नहीं है)। master शाखा एक पुरानी पुरानी कुकी है, और मुझे अब इसकी आवश्यकता नहीं है।एक निजी सर्वर (गिटहब नहीं) पर गिट मास्टर शाखा हटाएं

कुछ महीने पहले मैं master के बंद एक 0.8/develop शाखा बनाया है और तब से हम 0.8/master, 0.9/develop, 0.9/master के माध्यम से चला गया है और हम 1.0/develop पर वर्तमान में कर रहे हैं। मैं master शाखा से छुटकारा पाना चाहता हूं, मुख्य रूप से क्योंकि यह नामकरण सम्मेलन से मेल नहीं खाता है जिसे हमने स्थापित किया है। यह सिर्फ हाउसकीपिंग का मामला है।

मैं एक ब्लॉग पोस्ट इतने पर कई संबंधित सवाल है, साथ ही पाया, लेकिन वे सभी GitHub के उपयोग के लिए विशिष्ट होने लगते हैं, और नहीं अपने ही निजी सर्वर:

ये दोनों विशेष रूप से के प्रभाव के लिए कुछ कहना

बेशक, यह एक विकल्प नहीं है क्योंकि मैं गिटहब का उपयोग नहीं कर रहा हूं। मुझे लगता है कि मैं एक ही परिणाम प्राप्त करने के लिए अपने नंगे रेपो में कॉन्फ़िगरेशन फ़ाइल की सामग्री को संपादित कर सकता हूं। क्या वो सही है? कॉन्फ़िग फ़ाइल वर्तमान में इस तरह दिखता है:

[core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = true 
     logallrefupdates = true 
     ignorecase = true 
     precomposeunicode = false 
     sharedRepository = group 
[remote "origin"] 
     url = file:///Library/WebServer/Documents/loupe 
     fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
     remote = origin 
     merge = refs/heads/master 

मैं दो प्रश्न हैं:

  1. मैं अपने वर्तमान काम कर शाखा (1.0/develop), या सबसे पुराना शाखा अब सिर्फ़ को मेरा डिफ़ॉल्ट रेपो तय करनी चाहिए (0.8/develop) ?
  2. डिफ़ॉल्ट रेपो सेट करने के लिए कॉन्फ़िगरेशन फ़ाइल में मुझे किन संशोधनों की आवश्यकता है?
+0

'Git धक्का मूल: master',' Git दूरस्थ छँटाई origin' – madhead

+0

@madhead दूरस्थ: त्रुटि: डिफ़ॉल्ट रूप से, वर्तमान शाखा को हटाने से इनकार किया है, क्योंकि अगले दूरस्थ: त्रुटि: 'गिट क्लोन' का परिणाम किसी फ़ाइल को चेक आउट नहीं करेगा, जिससे भ्रम पैदा हो जाएगा। –

+0

मूल रूप से आप ऐसा कुछ करने की कोशिश कर रहे हैं जिसे आपको वास्तव में करने की आवश्यकता नहीं है। बस मास्टर को तारीख से बाहर छोड़ दें, या इसे अद्यतित रखें, जो कुछ भी आप चुनते हैं। इसे हटाने का कोई कारण नहीं है। –

उत्तर

7

पहले तय करें कि कौन सी शाखा डिफ़ॉल्ट शाखा होनी चाहिए जब भंडार क्लोन किया गया हो। मुझे इस उदाहरण के लिए new_master लगता है।

ग्राहकों में से एक पर रिमोट रिपोजिटरी पर new_master शाखा बनाएं, आप इसके बजाय master के लिए कुछ भी उपयोग कर सकते हैं, उदा। एक प्रतिबद्धता या कोई अन्य शाखा का नाम, या यदि आपके पास पहले से ही रिमोट पर उपयुक्त शाखा है तो इस चरण को छोड़ दें।

git push origin master:new_master 

अगले कदम रिमोट से नहीं किया जा सकता है, तो अपने दूरस्थ भंडार में आदेश पर अमल (जैसे SSH का उपयोग कर):

cd /path/to/my_git_repo 
git symbolic-ref HEAD refs/heads/new_master 

वैकल्पिक रूप से, HEAD फ़ाइल की सामग्री को बदल सीधे।

ग्राहक पर वापस

git fetch 
git remote show origin 

आपको दिखाई देना चाहिए HEAD अंक new_master बजाय master (या कि HEAD अस्पष्ट है अगर आप new_master सेट master होने के लिए) है।अब हम पुराने मास्टर को हटा सकते हैं:

git push origin :master 

गिट को हटाने के बारे में और शिकायत नहीं करनी चाहिए। अंत में, सेट स्थानीय refs/remotes/origin/HEAD:

git remote set-head origin -a 
+0

बहुत बढ़िया! क्या आप नए मास्टर के रूप में पुराने '0.8/विकास' या नए' 1.0/विकास' को चुनने की सलाह देंगे ... या इससे कोई फर्क पड़ता है? –

+1

यह केवल वह शाखा है जिसे चेक आउट किया जाता है जब कोई पहली बार भंडार क्लोन करता है। हमारा 'मास्टर'/'हेड' वर्तमान उत्पादन स्थिति को दर्शाता है, जबकि अन्य शाखाओं का सक्रिय विकास के लिए उपयोग किया जाता है। लेकिन यह सिर्फ हमारे वर्कफ़्लो है। जो भी आपके वर्कफ़्लो फिट बैठता है उसे सेट करें। – nif

संबंधित मुद्दे