चेतावनी: जब तक आप बिना काम खोना नहीं चाहते तब तक निम्न कमांड का उपयोग न करें!
का उपयोग करते हुए 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भी चीज़ के लिए कानूनी रूप से दोषी ठहरा सकते हैं ।