2015-10-08 8 views
8

यहाँ मेरी मामला है:टूटी शाखा, घातक: अपने वर्तमान शाखा टूटा हुआ प्रतीत होता

  • मैं एक शाखा पर काम कर रहा था।
  • रिमोट पर नए कामों को पहुंचाया।
  • मास्टर शाखा में वापस स्विच किया गया।

लेकिन अचानक git checkout master आदेश टाइप करने के बाद अपने कंप्यूटर blue screen of death का सामना करना पड़ा और एक अप्रत्याशित बल शट डाउन हुआ। मेरे कंप्यूटर को वापस शुरू करने के बाद मैंने अपनी वर्तमान शाखा की स्थिति की जांच की है और नतीजतन मुझे प्रत्येक फाइल को नई फाइलों के रूप में मिला है।

अब, मैं इस बिंदु पर अटक कर रहा हूँ और git log आदेश के बाद मैं कैसे इस समस्या को हल करने और अपनी शाखा ठीक करने के लिए त्रुटि

$ git log 
fatal: your current branch appears to be broken 

हो रही है ?.

मैं विंडोज 7 और Git बैश नवीनतम संस्करण के साथ काम कर रहा हूँ

संपादित करें: मैं इस शाखा को हटाने के लिए नहीं करना चाहती।

+0

फ़ाइल'git/HEAD' 'की सामग्री क्या है? क्या यह वैध शाखा नाम को इंगित करता है? क्या शाखा का नाम तब वैध प्रतिबद्ध हैश को इंगित करता है? – knittl

उत्तर

6

मैं Windows 7 पर समान मुद्दे को पूरा मेरे मामले में, वर्तमान शाखा फ़ाइल (./git/HEAD द्वारा देखें) \.git\refs\heads तहत टूट गया था।

मुझे उसी शाखा नाम के साथ .git\logs\refs\heads पर टूटी हुई वर्तमान शाखा का हैश कोड मिला।

और मैं उस फ़ाइल (.git\logs\refs\heads\xxx) नोटपैड के माध्यम से खोलने से समस्या का समाधान हो और कॉपी 4 संख्या (हैश कोड) (.git\refs\heads\xxx)

+0

.git फ़ोल्डर मेरे मामले में छिपा हुआ था, अपने लिए देखें। – PrakhaRaM

2

आप शाखा का नाम अब शायद ऐसा कुछ विशेष वर्ण या कुछ और होता है।

आप अपने चेक-आउट (जहां .git/ निर्देशिका है) और

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

ऐसा करने के बाद यह केवल मेरा इलाज करता था जैसे कि "सभी फाइलें नई थीं": \ – rogerdpack

4

.git \ refs \ head निर्देशिका में फ़ाइलें आपकी शाखाएं हैं। उन फ़ाइलों की जांच करें। उनमें केवल एक ही प्रतिबद्ध वस्तुएं SHA-1 हैश होनी चाहिए। यह हैश आपकी नवीनतम एसएचए -1 कुंजी और एक ही समय में आपका सिर है।

कॉपी SHA-1 कुंजी और प्रकार

$ git cat-file -t 5917fefd485f655ab369d4e9eeda3c157c03f514 
commit 

$ git cat-file -p 5917fefd485f655ab369d4e9eeda3c157c03f514 
tree b75cab3c54b780075b312be3e878b389a2baf904 
parent 8235189aa22169295243d295fb1cc2ff2f8f7cd5 
author Ilker Cat <[email protected]> 1495136738 +0200 
committer Ilker Cat <[email protected]> 1495136738 +0200 

दूसरा उत्पादन क्या एक प्रतिबद्ध वस्तु मूल रूप से होता है। यह जांचने का प्रयास करें कि क्या आपकी मास्टर शाखा में प्रतिबद्ध वस्तु .git \ refs \ head \ master और उसके पेड़ और अभिभावक SHA-1 कुंजी दूषित नहीं हैं।

यहां तक ​​कि आपकी मास्टर शाखा फाइल के अंदर कुछ एस्ट्रोफ्रेश भी "टूटी हुई शाखा" में आ जाएंगे। इसमें केवल सबसे आखिरी वस्तुएं SHA-1 हैश और कुछ और नहीं होनी चाहिए।

1

कुछ समय यह फ़ाइल अनुमति समस्याओं के कारण भी हो सकता है, जांचें कि क्या आपके पास रिपॉजिटरी के तहत सभी फाइलों पर उचित अनुमतियां हैं या नहीं।

+0

हाँ सही है लेकिन इस मामले में, केवल एकमात्र उपयोगकर्ता हूं; सभी अधिकार हैं! – Suresh

1

एक ही समस्या थी। हटा रहा है .git \ refs \ head \ मेरे लिए समस्या ठीक कर दी गई है।

3

यदि आप शाखा को नामस्थान (या फ़ोल्डर) शाखा में पुनर्नामित करने का प्रयास करते हैं तो आपको यह त्रुटि आ सकती है।

यदि ऐसा होता है, तो निर्देशिका .git/logs/refs/heads/<name> और .git/refs/heads/<name> पर जाएं, और आप देखेंगे कि आपकी शाखा अब इसके अंदर एक फ़ाइल वाला फ़ोल्डर है।

दोनों फ़ोल्डरों में, फ़ाइल को फ़ोल्डर के स्तर पर ले जाएं, उस शाखा को चेकआउट करें, अब खाली फ़ोल्डरों को हटाएं और अब आप त्रुटि के बिना git checkout -b <name>/<subname> निष्पादित करने में सक्षम होना चाहिए, या git branch -M <name>/<subname>

+1

मेरा दिन बचाया, धन्यवाद! – CGK

+1

आपको बहुत धन्यवाद नहीं दे सकता। लगभग एक छोटा दिल का दौरा पड़ा था! – 22kar

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