2012-06-19 13 views
22

मैं गिट टॉवर का उपयोग करके अपने भंडार में बदलाव खींचने का प्रयास कर रहा था। जब मैंने ऐसा किया, तो एक संघर्ष हुआ और मैंने गलती से मंच को मारा (जैसा कि मैं संघर्ष को हल करने के बाद प्रतिबद्ध करना चाहता था)। जब मैंने ऐसा किया, तो संघर्ष ने खुद को हल किया।गिट में, मैं एक चरणबद्ध फ़ाइल को कैसे पुनर्प्राप्त कर सकता हूं जिसे करने से पहले वापस किया गया था?

मैं मैन्युअल रूप से परिवर्तन को हल करना चाहता था इसलिए मैंने "एबॉर्ट मर्ज" मारा, हालांकि, जब मैंने ऐसा किया, तो यह मेरे सभी परिवर्तनों को वापस ले गया! क्या उन्हें वापस पाने का कोई तरीका है?

उत्तर

44

यदि आपके पास गिट के लिए कुछ भी था, तो शायद आपको वह वापस पाने में सक्षम होना चाहिए। (यदि आपने अभी काम करने की प्रतिलिपि बदल दी है, तो आप इसे पुनर्स्थापित नहीं कर पाएंगे।)

सबसे पहले: रन git gc चलाएं। आगे जाने से पहले अपने भंडार और काम करने की प्रति बैकअप लें। (.git निर्देशिका बैकअप करना सुनिश्चित करें।) यह हुआ कि टर्मिनल को बंद करने से बचें, और/या रीबूटिंग - यदि सभी विफल हो जाते हैं, तो आपके पास इतिहास/स्मृति में सामान ढूंढने का मौका है।

वैसे भी, कोशिश करने के लिए पहली बात यह है:

 
git fsck --lost-found 

यह

 
Checking object directories: 100% (256/256), done. 
Checking objects: 100% (30165/30165), done. 
dangling blob 8f72c7d79f964b8279da93ca8c05bd685e892756 
dangling commit 4993502a6394491190d3f4d6fb3d1e14019c2e9b 

जब से तुम खो दिया है का मंचन किया फ़ाइलें और एक प्रतिबद्ध नहीं किया की तरह कुछ प्रिंट होगा, आप dangling blob प्रविष्टियों में रुचि रखते हैं ।

प्रत्येक के लिए git show <sha> चलाएं - उनमें से कुछ आपकी फाइलें होनी चाहिए।

+4

धन्यवाद! मैंने आशा छोड़ दी थी कि गिट ने कोई गैर-प्रतिबद्ध फाइलें रखी थीं। मैं उन लोगों के लिए एक टिप जोड़ना चाहता था जिनके खोए और पाए गए बहुत सारे कचरे हैं। मेरे पास 100 की प्रविष्टियां थीं, इसलिए हैश ढूंढने के लिए, आप अपनी गिट निर्देशिका में एक खोज-इन-फ़ाइल प्रकार कमांड का भी उपयोग कर सकते हैं जब तक कि आप जो फ़ाइल लिखी थी, उसे याद रख सकें।मैंने का उपयोग किया। | xargs grep 'PIECE_OF_MISSING_CODE' -sl | grep 'lost-found' – David

+0

गिट शो बकवास दिखाता है, मेरा मतलब है कि कुछ पहचानने योग्य तार हैं, लेकिन शेष बकवास है। क्या इसका मतलब किसी भी तरह से डीकोड किया जाना है, या यह है कि यह क्या है (प्रयोग योग्य नहीं)। – jayarjo

+1

धन्यवाद। आपने अभी अपना दिन बचाया – fuz

4

सिकंदर के उत्तर पर एक सरल विकल्प के साथ विस्तार करने के लिए: हाँ, अगर आपने अपने परिवर्तनों का मंचन किया है तो आप शायद अपनी फाइलें वापस ले सकते हैं। जब आप git add चलाते हैं, तो फ़ाइलों को वास्तव में गिट के ऑब्जेक्ट डेटाबेस में जोड़ा जाता है। जैसे ही आप करते हैं पर, Git सूचकांक में फ़ाइल डाल देंगे:

% git add bar.txt 
% git ls-files --stage 
100644 ce013625030ba8dba906f756967f9e9ca394464a 0 bar.txt 
100644 6af0abcdfc7822d5f87315af1bb3367484ee3c0c 0 foo.txt 

ध्यान दें कि bar.txt के लिए प्रवेश फ़ाइल की वस्तु आईडी में शामिल है। गिट ने वास्तव में फ़ाइल को अपने ऑब्जेक्ट डेटाबेस में जोड़ा है। इस मामले में, Git एक ढीला वस्तु के रूप में भंडार में जोड़ा गया है:

% ls -Flas .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a 
4 -r--r--r-- 1 ethomson staff 21 14 Jun 23:58 .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a 

इन फ़ाइलों अंत में कचरा एकत्र किया जा (ताकि वास्तव में, स्पष्ट रूप से git gc नहीं चला) होगा। शुक्र है, डिफ़ॉल्ट रूप से, यह महीने के मामले में नहीं होगा, दिन नहीं। जब तक ये फ़ाइलें कचरा एकत्र नहीं होती हैं, तब तक आप उन्हें पुनर्प्राप्त कर सकते हैं। नहीं प्रतिबद्ध (या इंडेक्स में)

% git recover -i 
Recoverable orphaned git blobs: 

61c2562a7b851b69596f0bcad1d8f54c400be977 (Thu 15 Jun 2017 12:20:22 CEST) 
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 
> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
> veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
> commodo consequat. Duis aute irure dolor in reprehenderit in voluptate 

Recover this file? [y,n,v,f,q,?]: 

git-recover वस्तु डेटाबेस में फ़ाइलों हैं कि के लिए लग रहा है:

यह करने के लिए सबसे आसान तरीका है इंटरैक्टिव मोड में download and install the git-recover program है। आप the blog post announcing it में git-recover के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

+2

आपको आशीर्वाद! आपने मेरा बेकन बचा लिया, लॉल –

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

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