2012-03-17 11 views
16

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

git reset --hard 

क्या इस स्थिति में हटाई गई फ़ाइलों को पुनर्स्थापित करना संभव है?

+1

यदि आप 'हुआ Git कुछ बिंदु पर इन फ़ाइलों add', भले ही आप उन्हें कभी नहीं किया, वे अभी भी जब तक वे कचरा एकत्र कर रहे हैं (के बारे में दो सप्ताह में) धब्बे के रूप में चारों ओर लटका दिया जाएगा । 'git fsck' ऑब्जेक्ट्स को [लटकना या पहुंचने योग्य] के रूप में सूचीबद्ध करेगा (https://stackoverflow.com/a/36671659/712526)। फिर आप उन्हें पुनर्स्थापित करने के लिए 'git cat-file -p deadbeef> पुरानी-फ़ाइल-नाम 'का उपयोग कर सकते हैं। – jpaugh

+0

([पॉड का जवाब] (https://stackoverflow.com/a/45815093/712526) पहले से ही इसे कवर करता है, व्हाउप्स!) – jpaugh

+0

संभावित डुप्लिकेट: https://stackoverflow.com/q/25791533/712526 – jpaugh

उत्तर

42

कुछ बेहतर आईडीई स्थानीय फ़ाइलों के रूप में आपकी फ़ाइलों का ट्रैक रखती हैं। यदि आपने फ़ाइलों को बाहरी रूप से हटा दिया है (कहें, git reset) तो आप मूल आईडी पर अपने आईडीई में क्लिक करने और "स्थानीय इतिहास से तुलना करें" चुनने में सक्षम होना चाहिए।

मैं जब मेरे ट्रैक न किए गए फ़ाइलों कुछ उपयोगिता से सफाया हो गया PHPStorm आईडीई में सफलतापूर्वक इस सुविधा का उपयोग किया ...

+4

ग्रहण के लिए, नेविगेट करें फ़ोल्डर/पैकेज में फ़ाइल (प्रोजेक्ट एक्सप्लोरर या पैकेज एक्सप्लोरर व्यू) में राइट-क्लिक करें, और संदर्भ मेनू से 'स्थानीय इतिहास से पुनर्स्थापित करें' चुनें। –

+2

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

+2

मेरे उत्तर को "खुश अंत" में योगदान देने में हमेशा खुशी हुई :) –

11

नहीं ................... यह नहीं है।

4

git reset --hard एक बहुत ही खतरनाक आदेश है, इसलिए सावधान रहना जब आप इसे अगली बार :)

का उपयोग आप किसी भी उन फ़ाइलों के लिए प्रतिबद्ध नहीं है, तो ऐसा लगता है तुम कोई मौका उन्हें बहाल किया है।

अन्यथा, रीफ्लॉग कमांड आपकी मदद कर सकता है।

1

उस Git से ट्रैक न किए गए हटाई गई फ़ाइलों के पिछले संस्करण पर उपयोग नहीं कर सकते, क्योंकि, coruse की, वे मौजूद नहीं है। मैं उन्हें कुछ बैकअप से पुनर्प्राप्त कर सकता हूं (शायद विचार/संपादक द्वारा छोड़े गए छिपी बैकअप फाइलें हैं?), या, वैकल्पिक रूप से, मैं उस फाइल सिस्टम पर काम करने से बचने और पुनर्प्राप्ति उपकरणों की खोज शुरू करने से बचूंगा।

+1

संपादक पर अच्छी कॉल! मैंने दुर्घटना से फ़ाइल से अनचाहे परिवर्तनों को त्याग दिया था (गितब ऐप को अभिशाप) लेकिन मुझे एहसास हुआ कि अभी भी एटम में फ़ाइल खुली है और मेरे बदलाव वापस पाने के लिए बस "पूर्ववत करें" दबा सकता है। – henrebotha

+0

@henrebotha, नमस्ते! यह सिर्फ मेरे साथ हुआ, लेकिन दुर्भाग्य से मेरे पास गिट हार्ड रीसेट के बिंदु पर मेरा परमाणु खोला नहीं गया था, क्या आप किसी भी संभावित तरीके से मुझे बचा सकते हैं। बहुत मूर्खतापूर्ण मेरे पास मेरी अनचाहे फ़ाइलों में बहुत सी चीजें थीं। –

+0

@ gdad-s-river आप अभी भी तथ्य के बाद एटम अप खोलने में सक्षम होना चाहिए और जब तक आप किसी बिंदु पर एटम में फ़ाइल संपादित करते हैं, तब तक 'पूर्ववत' हिट करें। – henrebotha

1

git reset --hard अनचाहे फ़ाइलों को नहीं हटाएगा। हालांकि, git clean होगा।

लेकिन यदि आप git add फ़ाइलें, git commit उन्हें नहीं है और फिर git reset --hard उन फ़ाइलों खो जाएगा चलाते हैं।

लेकिन यह ठीक है, क्योंकि उन्हें पुनर्प्राप्त किया जा सकता है, जैसा कि this answer में दिखाया गया है। (ठीक है, अगले git gc तक)।

2

(नोट:।। चरणों लगते हैं, कुछ बदल करने के बाद से स्वीकार किए जाते हैं जवाब पोस्ट किया गया था लेकिन यह विचार ही रहता है)

स्वीकार किए जाते हैं जवाब देने के लिए जोड़ने के लिए, मैं करने में सक्षम था Webstorm 2016.

  1. सबसे पहले उपयोग करते हुए मेरे हटाई गई फ़ाइलों को ठीक है, मैं एक मजबूर स्वच्छ का उपयोग कर Git git clean -f कर मेरी फाइल खो दिया है।
  2. यह ठीक करने के लिए, मैं Webstorm में चला गया और निम्न चरणों के लिए क्या किया:

    • जाओ अपनी परियोजना के लिए टैब प्रोजेक्ट है, है ना 'इतिहास शो' 'स्थानीय इतिहास' के तहत करने के लिए क्लिक करें। (As shown in this picture.)

    • एक बार 'इतिहास दिखाएं' पर क्लिक किया जाता है, तो कोई इसे 'बाहरी परिवर्तन -> वापस' के साथ पॉप अप देख सकता है। वांछित फ़ाइलों को दाईं ओर वापस करने के लिए क्लिक करें।(As shown in the attached picture.)

    • उपर्युक्त 2 चरणों के बाद, आपको अपनी फ़ाइल को 'प्रोजेक्ट' टैब में वापस देखना चाहिए। 'स्थानीय इतिहास' पॉप अप इस संलग्न तस्वीर में कुछ दिखाएगा। Reverted to External Change आपको इसे गिट में जोड़ने का विकल्प मिलेगा।

    • इसे अनचाहे करने के लिए, बस कमांड लाइन से git reset HEAD <filename> करें।

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