2015-11-18 7 views
5

मैं अपने Git भंडार को साफ करने की कोशिश कर रहा हूँ औरगिट: स्थानीय-ट्रैकिंग, नई शाखा जोड़ें?

  1. एक नई शाखा है कि मेरे उत्पादन (गुरु) शाखा दर्पण बनाएँ।
  2. किसी भी अनावश्यक शाखाओं, दूरस्थ या स्थानीय निकालें। (अगर मैं ऐसा करने की आवश्यकता, लाभ idk?)
  3. अपने स्थानीय शाखाओं स्थानीय ट्रैकिंग शाखाओं बनाओ
  4. स्थानीय & देव (देव) के लिए एक शाखा, 1 मंचन के लिए शाखा यानी मेरे कार्यप्रवाह के प्रत्येक चरण के लिए एक शाखा है (स्टेजिंग), और उत्पादन के लिए 1 शाखा (उत्पादन)। स्थानीय और देव एक ही कामकाजी शाखा साझा कर सकते हैं, लेकिन स्टेजिंग और उत्पादन के लिए अलग शाखाएं।

कमांड लाइन से आप मेरे पर्यावरण को देख सकते हैं।

$ git remote 
dev 
origin 
production 
staging 

$ git branch -r 
dev/dev 
origin/HEAD -> origin/master 
origin/dev 
origin/master 
production/master 
wpengine-findcra/master 

$ git branch -vv 
dev     xxxxxxx <comment> 
*master    xxxxxxx [origin/master] <comment> 
production/staging xxxxxxx [remotes/production/master] <comment> 
staging/master  xxxxxxx <comment> 

मेरे पास 4 स्थान हैं जिनसे मैं काम करता हूं। कोड 4.

  1. अपने स्थानीय मशीन के लिए 1 से बहती है
  2. विकास सर्वर
  3. मचान सर्वर
  4. उत्पादन सर्वर

मैं मंचन के लिए विशेष रूप से एक नई शाखा जोड़ना चाहते हैं सर्वर, और अभी मैं इसे उत्पादन (मास्टर) शाखा दर्पण करना चाहता हूं। लेकिन मैं इस त्रुटि में चलाता हूं और मुझे नहीं पता कि क्या करना है।

$ git checkout master 
$ git branch staging 
error: there are still refs under 'refs/heads/staging' 
fatal: Failed to lock ref for update: Is a directory 

मेरे कोड मूल/मास्टर और देव/dev के तहत अप टू डेट है।

+0

इस उत्तर को कुछ हद तक समझ में आता है, लेकिन मूल प्रश्न "धक्का" के साथ काम कर रहा है और मैं इसे कैसे लागू करने के लिए नहीं देख सकते हैं मेरी स्थिति के लिए। http://stackoverflow.com/questions/11245897/push-to-remote-repo-gives-the-error-there-are-still-refs-under?answertab=active#tab-top – italiansoda

उत्तर

7

यदि आपके पास एक नाम वाली शाखा है जिसमें स्लैश होता है, तो गिट (.git/refs/heads में) एक निर्देशिका जिसे आपकी शाखा के नाम की तरह नामित किया जाएगा, स्लैश तक। उस निर्देशिका में यह शाखा के लिए रेफरी रखेगा। तो निर्देशिका .git/refs/heads/staging/ मौजूद है और आपकी शाखा staging/master के कारण फ़ाइल "मास्टर" है।

जब आप शाखा "स्टेजिंग" बनाने का प्रयास करते हैं, तो गिट फ़ाइल .git/refs/heads/staging फ़ाइल बनाने का प्रयास करेगा। चूंकि यह पहले से मौजूद है लेकिन एक निर्देशिका है, यह असफल हो जाएगी। इस प्रकार आपके पास इन रिपॉजिटरी में इन नामों के साथ दो शाखाएं नहीं हो सकती हैं।

Git का नवीनतम संस्करण त्रुटि संदेश इस तरह दिखेगा में:

fatal: cannot lock ref 'refs/heads/staging': 'refs/heads/staging/master' exists; cannot create 'refs/heads/staging' 
+0

धन्यवाद, यह मुझे इंगित करता है सही दिशा! मैंने एक स्थानीय शाखा स्टेजिंग/मास्टर को हटाने और मेरे स्टेजिंग सर्वर से दूरस्थ रूप से जुड़े एक नई शाखा स्टेजिंग/स्टेजिंग को समाप्त कर दिया। मैंने इसे मूल/स्टेज उर्फ ​​गीथूब पर अपने मूल सर्वर पर भी धक्का दिया। मैंने स्टेजिंग/मास्टर को हटा दिया, लेकिन मूल कोड/मास्टर को चेकआउट करने में सक्षम था और इसे नए स्टेजिंग/स्टेजिंग में ब्रांच कर दिया क्योंकि मैं उसी कोड बेस पर था। – italiansoda

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