चेतावनी: जब तक आप बिना काम खोना नहीं चाहते तब तक निम्न कमांड का उपयोग न करें!
का उपयोग करते हुए git reset
समझाया गया है, लेकिन आपने पाइप किए गए आदेशों का स्पष्टीकरण भी मांगा है, इसलिए यहां दिया गया है:
git ls-files -z | xargs -0 rm -f
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached
कमांड git ls-files
उन सभी फाइलों को सूचीबद्ध करता है जिनके बारे में git को पता है। विकल्प -z
उन पर एक विशिष्ट प्रारूप लागू करता है, जिस प्रारूप की अपेक्षा की जाती है xargs -0
, जो तब rm -f
उन पर आक्रमण करता है, जिसका अर्थ है कि आपकी स्वीकृति के लिए उन्हें चेक किए बिना हटा दें।
दूसरे शब्दों में, "सभी फ़ाइलों की सूची के बारे में जानते हैं और अपनी स्थानीय प्रति हटा दें"।
फिर हम प्राप्त करते हैं git diff
, जो उन विभिन्न संस्करणों के बीच परिवर्तन दिखाता है जिनके बारे में git जानता है। वे विभिन्न पेड़ों के बीच परिवर्तन हो सकते हैं, स्थानीय प्रतियों और दूरस्थ प्रतियों के बीच अंतर हो सकता है, और इसी तरह।
जैसा कि यहां उपयोग किया गया है, यह अस्थिर परिवर्तनों को दर्शाता है; फ़ाइलें जो आपने बदली हैं, लेकिन अभी तक प्रतिबद्ध नहीं हैं। विकल्प का --name-only
मतलब है कि आप (पूर्ण) फ़ाइल नाम केवल --diff-filter=D
चाहते हैं और इसका मतलब है कि आप केवल नष्ट की गई फ़ाइलों में रुचि रखते हैं। (अरे, क्या हमने सिर्फ सामान का एक गुच्छा नहीं हटाया?)
इसके बाद xargs -0
हमने पहले देखी गई चीज़ों में पाइप किया , जो git rm --cached
उन पर हमला करता है, जिसका अर्थ है कि वे कैश से हटा दिए जाते हैं, जबकि काम करने वाले पेड़ को अकेला छोड़ दिया जाना चाहिए - इसके अलावा आपने अपने काम के पेड़ से सभी फाइलें हटा दी हैं। अब वे आपके सूचकांक से भी हटा दिए गए हैं।
दूसरे शब्दों में, सभी परिवर्तन, मंचन या अस्थिर, चले गए हैं, और आपका काम करने वाला पेड़ खाली है। रोएं, मूल या दूरस्थ से अपनी फ़ाइलों को चेकआउट करें, और अपने काम को फिर से करें। उन अधम लाइनों को लिखने वाले दुखवादी को शाप दें; मेरे पास कोई सुराग नहीं है कि कोई भी ऐसा क्यों करना चाहेगा।
टीएल; डीआर: आपने अभी सब कुछ ठीक किया है; शुरू करें और git reset
अभी से उपयोग करें ।
rm -f
एक git कमांड नहीं है और इसका कोई--cached
विकल्प नहीं है । आपके द्वारा निष्पादित किए जाने से पहले आपकी स्थानीय फ़ाइलें हटा दी गई थीं,git rm
इसलिए मुझे नहीं लगता कि आप किसीgit rm
भी चीज़ के लिए कानूनी रूप से दोषी ठहरा सकते हैं ।