git - एक "गिट आरएम-आर" कैसे वापस करें?
git-rm (8)
मैंने गलती से git rm -r .
कहा git rm -r .
। मैं इससे कैसे ठीक हो सकता हूं?
मैंने प्रतिबद्ध नहीं किया।
मुझे लगता है कि सभी फाइलों को हटाने के लिए चिह्नित किया गया था और मेरे स्थानीय चेकआउट से भी शारीरिक रूप से हटा दिया गया था।
संपादित करें: मैं कर सकता था (अगर मैं आदेश जानता था) अंतिम प्रतिबद्धता पर वापस आ गया। लेकिन अगर मैं git rm -r .
पूर्ववत कर सकता हूं तो यह बहुत बेहतर होगा git rm -r .
। क्योंकि मुझे सच में यकीन नहीं है कि मैंने आखिरी प्रतिबद्धता के बाद और git rm -r .
पहले क्या किया था git rm -r .
।
अद्यतन करें:
चूंकि git rm .
कामकाजी चेकआउट के साथ-साथ इंडेक्स में इस और बाल निर्देशिका में सभी फाइलों को हटा देता है, आपको इन परिवर्तनों में से प्रत्येक को पूर्ववत करने की आवश्यकता है:
git reset HEAD . # This undoes the index changes
git checkout . # This checks out files in this and child directories from the HEAD
यह वही करना चाहिए जो आप चाहते हैं। यह आपके चेक-आउट कोड या इंडेक्स के मूल फ़ोल्डर को प्रभावित नहीं करता है।
पुराना जवाब जो नहीं था:
reset HEAD
चाल करेगा , और आपके फ़ाइलों में किए गए किसी भी असामान्य परिवर्तन को मिटा नहीं देगा ।
उसके बाद आपको कतारबद्ध किए गए किसी भी git add
कमांड को दोहराने की आवश्यकता है।
कुछ एकल फ़ाइलों या फ़ोल्डरों को वापस पाने के लिए कोई निम्न का उपयोग कर सकता है
git reset -- path/to/file
git checkout -- path/to/file
इससे पहले path/to/file
लिए इंडेक्स प्रविष्टियों को फिर से बनाया जाएगा और path/to/file
को फिर से बनाया जाएगा क्योंकि यह अंतिम प्रतिबद्धता में था, यानी HEAD
।
संकेत: किसी पुराने प्रतिबद्धता से फ़ाइलों को पुनर्निर्मित करने के लिए दोनों आदेशों को एक प्रतिबद्ध हैश पास कर सकता है। विवरण के लिए git reset --help
और git checkout --help
देखें।
मेरे पास एक समान स्थिति थी। मेरे मामले में समाधान था:
git checkout -- .
मेरे पास बिल्कुल वही समस्या थी: मेरे फ़ोल्डर्स को साफ करना, पुनर्व्यवस्थित करना और फ़ाइलों को ले जाना। मैंने प्रवेश किया: जीआईटी आरएम । और प्रवेश मारा; और फिर महसूस किया कि मेरे आंत थोड़ा सा ढीला है। सौभाग्य से, मैंने सीधे गिट प्रतिबद्धता में टाइप नहीं किया- "" सीधे।
हालांकि, निम्नलिखित आदेश
git checkout .
सब कुछ बहाल किया, और मेरे जीवन को बचाया।
यदि आप ऊपर दिए गए किसी भी काम के साथ समाप्त नहीं होते हैं, तो आप यहां से सुझाव का उपयोग कर डेटा पुनर्प्राप्त करने में सक्षम हो सकते हैं: http://www.spinics.net/lists/git/msg62499.html
git prune -n
git cat-file -p <blob #>
यदि आपने परिवर्तन किए हैं और उन्हें धक्का दिया है, तो आप फ़ाइल को वापस पाने के लिए ऐसा कर सकते हैं
// Replace 2 with the # of commits back before the file was deleted.
git checkout HEAD~2 path/to/file
पूर्व गिट आरएम
git rm file # delete file & update index
git checkout HEAD file # restore file & index from HEAD
पूर्ववत गिट आरएम-आर
git rm -r dir # delete tracked files in dir & update index
git checkout HEAD dir # restore file & index from HEAD
पूर्ववत गिट आरएम-आरएफ
git rm -r dir # delete tracked files & delete uncommitted changes
not possible # `uncommitted changes` can not be restored.
Uncommitted changes
में not staged changes
Uncommitted changes
शामिल not staged changes
, staged changes but not committed
।
git reset HEAD
ऐसा करना चाहिए यदि आपके पास कोई असामान्य परिवर्तन नहीं है जिसे आप परवाह करते हैं, तो
git reset --hard HEAD
जबरन अपनी आखिरी प्रतिबद्धता को सब कुछ रीसेट करना चाहिए। यदि आपके पास असामान्य परिवर्तन हैं, लेकिन पहला आदेश काम नहीं करता है, तो git stash
साथ अपने असामान्य परिवर्तनों को सहेजें:
git stash
git reset --hard HEAD
git stash pop