2012-06-14 6 views
22

में टूटी शाखा हटाएं मैंने "गिट चेकआउट -बी माइब्रैंच" के साथ शाखा बनाई है। ऐसा लगता है कि कुछ गलत हो गया, और अब मैं इसे "गिट शाखा-डी माइब्रैंच" का उपयोग करके हटा नहीं सकता। यह कहता है: त्रुटि: शाखा 'mybranch' नहीं मिला।गिट

+0

यहां एक बेवकूफ सवाल है: आप कैसे जानते हैं कि इसे पहले ही हटाया नहीं गया है और अभी भी मौजूद है? – bdares

+1

क्या आप अपनी शाखा 'गिट शाखा' में देख सकते हैं, या डिस्क पर '.git/packed-refs' या' .git/refs/heads' में देख सकते हैं? – Rup

+2

हां, मैं गिट शाखा –

उत्तर

41

यदि git branch -D वास्तव में काम नहीं कर रहा है, तो आपका एकमात्र विकल्प इसे साइड-चरण करना है और गिट चेक-आउट की स्थिति को स्वयं संपादित करना है। आप अपने चेक-आउट (जहां .git निर्देशिका है) और

  1. संपादित .git/packed-refs की जड़-निर्देशिका के पास जाना चाहिए; यदि आप अपनी शाखा के नाम के साथ एक रेखा देखते हैं तो इसे
  2. अपनी शाखा के नाम पर फ़ाइल के लिए .git/refs/heads देखें; यदि आप एक देखते हैं, तो इसे
1

आपको स्पष्ट रूप से ऐसी शाखा को हटाने की आवश्यकता नहीं है जो मौजूद नहीं है। शाखाओं की सूची देखने के लिए git branch का उपयोग करें, यदि यह वहां नहीं है, तो कोई शाखा नहीं है, और आपको इसे हटाने की आवश्यकता नहीं है। अन्यथा सही नाम टाइप करना सुनिश्चित करें और git branch -D काम करना चाहिए।

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

+1

यह सुनिश्चित करने के लिए कि आपने गलती से शाखा को अपने रिमोट रिपोजिटरी में धक्का नहीं दिया है, 'गिट शाखा-ए' को भी आजमाएं। यदि आपके पास है, तो आप उस शाखा को हटाने के निर्देशों को यहां पढ़ सकते हैं [यहां] (http://gitready.com/beginner/2009/02/02/push-and-delete-branches.html) – Shahbaz

+0

बेशक आप कर सकते हैं एक टूटी हुई/हटाई गई शाखा की वजह से धक्का नहीं है जो अभी भी पैक-रेफ में है। – steviesama

+0

यह अभी भी पीछे की ओर एक दर्द है जो टूटी पुरानी शाखा रेफरी को किसी के गिट क्लाइंट को क्लोजिंग कर रही है। कोई भी नहीं चाहता है। जाहिर है कि दोस्त एक शाखा को हटाने की कोशिश कर रहा है जो गिट शाखा का उपयोग करने के लिए "प्रकट होता है" मौजूद है। इस सुझाव के लिए –

7

मैंने इस समस्या को ठीक करने के लिए git update-ref -d refs/heads/<branch name> का उपयोग किया। संभवतः, यह वही काम करता है जो कि चयनित उत्तर में बताता है कि इसे गिट के सीएलआई के माध्यम से इंटरफेस किया गया है।

1

मुझे एक ही समस्या थी। जब भी मैंने git branch कमांड निष्पादित किया, तो शाखा शाखाओं की सूची में थी, लेकिन मैं इसे हटा नहीं सका।

मेरे मामले में समाधान सरल और थोड़ा अप्रत्याशित था: मैंने टूटी हुई शाखा git checkout broken_branch (हाँ, यह काम किया) की जांच की, फिर मैंने मास्टर पर वापस जांच की और ... फिर से git branch -D broken_branch निष्पादित किया।

1

शाखा का नाम विशेष वर्ण यह उद्धृत किए जाने की आवश्यकता शामिल हैं:

$ git branch -D 'ENH-Adding-unit-``julian``-to-``to_datetime``' 
+0

धन्यवाद। मेरी शाखा को 'sandpit-ş-blockquotes' कहा जाता है - मैंने सुझाव दिया है कि आपने इसे उद्धृत करने का प्रयास किया है, लेकिन यह अभी भी काम नहीं करता है :-( '$ गिट शाखा-डी 'सैंडपिट-ş-blockquotes'। क्या आप क्या कोई और विचार/सुझाव हैं? – samjewell

+0

@ सैमजवेल शायद यूनिकोड प्रतीकों का कंसोल द्वारा सही व्याख्या नहीं किया गया है? – Winand

+1

@samjewell मैं SourceTree https://pp.vk.me/c636719/v636719561/19786/ में शाखा बनाने और हटाने में सक्षम था Q5DRz-b39VE.jpg – Winand

1

मैं एक ही समस्या git branch -d <branch_name> काम नहीं कर रहा था, और मैं .git/packed-refs और .git/refs/heads में कुछ भी नहीं मिला था, लेकिन मैं

में फ़ाइलों को मिला

.git/refs/remotes/origin

शाखाओं के नाम से जो मैं स्थानीय रूप से और दूरस्थ रूप से हटाने में सक्षम नहीं था। लेकिन branch_name के साथ फ़ाइलों को हटाने के बाद जिन्हें मैं हटाना चाहता था, यह स्थानीय में दिखाई नहीं दे रहा था।

दूरदराज के उपयोग पर इसे हटाने के लिए

git fetch -p origin

-p --prune विकल्प बताता है कि प्राप्त करने में कठिनाई से पहले, किसी भी दूरस्थ ट्रैकिंग संदर्भ जो अब रिमोट पर मौजूद हटा दें। फिर कमांड

git push origin :<branch_name_you_was_unable_to_delete>

दूरस्थ पर हटाने के लिए उपयोग करें।

और आप कर रहे हैं।:)