2009-10-09 12 views
9

मेरे काम की Git भंडार टूट गया है, उसमें सभी फाइलों को ट्रैक खो देते हैं, अर्थातपुन: प्राप्त करना टूटा Git भंडार

 
$ git log 
fatal: bad default revision 'HEAD' 
 
$ git status 
... told me that all the files are new 

हालांकि .git निर्देशिका मेरी वस्तुओं को शामिल करता है।

 
$ du -sh .git 
34M .git 
 
$ git count-objects 
4151 objects, 32692 kilobytes 
 
$ git --version 
git version 1.6.0.4 

आखिरी बात मुझे याद है चला गया इससे पहले कि यह गलत (क्लोन --mirror) एक एनएफएस पर लगे सर्वर पर एक बैकअप भंडार का निर्माण कर रहा कर। हालांकि बैकअप भंडार क्लोन एक ही तरह से टूटा हुआ है।

मैं अपना भंडार कैसे पुनर्स्थापित कर सकता हूं?

+0

क्या आपके भंडार में कोई 'मास्टर' शाखा है? साथ ही, क्या आपको 'गिट लॉग --all' के साथ एक अलग परिणाम मिलता है? –

+0

नहीं, 'गिट शाखा-ए' मुझे कुछ भी नहीं बताती है। – Eyoka

उत्तर

8

क्लोन के अलावा कुछ भी होना चाहिए, लेकिन मुझे पता है कि उन चीजों को याद रखना कितना मुश्किल है।

पहली चीज जो आप करना चाहते हैं वह है। Git/refs में देखें और देखें कि वहां कुछ भी वैध है या नहीं (मैं बहुत आशावादी नहीं हूं क्योंकि आप कहते हैं कि कोई शाखा नहीं दिखती है, लेकिन यह लायक है एक दृश्य)। यदि कोई वैध रेफ मौजूद है, तो आप git-reflog से कुछ जानकारी प्राप्त कर सकते हैं।

अगला, मैं git-fsck पर एक नज़र रखना शुरू कर दूंगा। इसका मुख्य उद्देश्य डेटाबेस में वस्तुओं की कनेक्टिविटी और वैधता को सत्यापित करना है। आपके रेपो के साथ वास्तव में क्या हुआ है, इस पर निर्भर करता है कि आपको --unreachable या --lost-found की आवश्यकता हो सकती है। उम्मीद है कि वस्तुएं बरकरार हैं, इसलिए आपको केवल कुछ खतरनाक प्रतिबद्धताओं को जांचना है और शाखाओं को फिर से बनाना है।

+0

धन्यवाद। मैंने रिपॉजिटरी मैन्युअल रूप से तय कर दी है। यह पता चला कि शाखाएं (.git/refs/heads में फ़ाइलें) गायब थीं, लेकिन वस्तुएं बरकरार थीं। मैं .git/logs/HEAD से प्रत्येक शाखा की नोक की प्रतिबद्धता प्राप्त करने में सक्षम था, और शाखाओं फ़ाइलों को फिर से बनाने के लिए उनका उपयोग किया। मुझे तब गिट-एफएसके कमांड नहीं पता था। हालांकि मैं अभी भी उत्सुक हूं कि यह कैसे हुआ, जाहिर है मैंने

git branch -d
नहीं किया। मुझे कई गिट कमांड नहीं पता, केवल मुझे याद रखने वाले
git reset
और
git remote rm ...
Eyoka

1

आप मैन्युअल रूप से जांच सकते हैं, लेकिन उसे भंडार के प्रारूप पर कुछ ज्ञान की आवश्यकता होगी।

भंडार को देखे बिना क्या हो रहा है यह बताने में मुश्किल है, लेकिन शायद कुछ फाइल दूषित हो गई है।

रन गिट fsck और यह बताएगा कि आपका संग्रह अभी भी मान्य है या नहीं।

गिट fsck रन के परिणाम पोस्ट करें और इससे हमें आपकी सहायता करने में मदद करनी चाहिए।

1

यह जांचने का प्रयास करें कि क्या आपकी प्रत्येक फाइल .git/वर्तमान उपयोगकर्ता के स्वामित्व में है या नहीं।

मुझे एक ही समस्या थी, जब मैंने महसूस किया कि मैंने कुछ रूट उपयोगकर्ता के साथ काम किया है, और यह ऑब्जेक्ट बनाया गया है (.git/ऑब्जेक्ट्स के तहत) जहां रूट से संबंधित है, नियमित उपयोगकर्ता के रूप में गिट चलाने पर त्रुटियों को ट्रिगर करता है।

sudo chown jb:jb .git/ -R * 
1

मैं अपने GitHub आवेदन (पीसी) दुर्घटनाग्रस्त हो गया के बाद अभी इस समस्या को मिल गया:

यह आदेश समस्या हल हो। git branch का उपयोग करते समय मेरी शाखा गायब हो गई और उसने मुझे अपनी प्रारंभिक प्रतिबद्धता करने के लिए प्रेरित किया। मैंने अपनी शाखा को .git/refs/heads/ में ढूंढकर हल किया और इसे mybranch.lock से mybranch (लॉक को हटाएं) में नामित किया।

+0

इस उत्तर में मेरे मामले में मदद मिली। मैं विंडोज के लिए गिटहब का उपयोग कर रहा था और अचानक यह प्रत्येक फ़ाइल को भंडार में एक नई फाइल के रूप में माना जाता था। गिट लॉग लौटा "घातक: खराब डिफ़ॉल्ट संशोधन 'HEAD'"। गिट एफएसके ने लटकते हुए कामों का एक गुच्छा वापस कर दिया। मुझे सिर्फ मास्टर मास्टर का नाम बदलना पड़ा। मास्टर के लिए लॉक करें –

0

डेवलपर ने एक केंद्रीकृत रेपो के बेयर मास्टर के अंदर $ git init के बाद यह समस्या थी।

यदि आप कोई कामकाजी निर्देशिका वाले भंडार के साथ काम कर रहे हैं, तो .git फ़ोल्डर की जांच करें; इसे हटाने से समस्या ठीक होनी चाहिए।

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