“Git add <dir>” को पूर्ववत करें?


186

मैंने गलती से "git add dir" कमांड का उपयोग करके फ़ाइलें जोड़ दीं। मैंने अभी तक "गिट कमिट" नहीं चलाया है। क्या इस डायर को हटाने का एक तरीका है और इसके भीतर निहित सब कुछ कमिट से?

मैंने कोशिश की है git reset dir, लेकिन यह काम नहीं किया। जाहिरा तौर पर git reset fileइसे पूर्ववत करने का तरीका है। लेकिन मेरे पास इतनी फाइलें और इतना कम समय है।


6
git reset <path>उस पथ के लिए अनुक्रमणिका को अद्यतन करता है ताकि यह मेल खाता हो HEAD(वर्तमान प्रतिबद्ध)। यह काम करने वाले पेड़ को नहीं छूता है।
कैस्केबेल

जवाबों:


279

सूचकांक से एक निर्देशिका और उसके अंदर सब कुछ निकालने के लिए,

git rm --cached -r dir

--cachedस्विच बनाता git rmसूचकांक पर काम केवल और नहीं काम कर प्रति स्पर्श करें। -rस्विच यह पुनरावर्ती बनाता है।


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

1
यही कारण है कि मैंने --cachedस्विच को बोल्ड कर दिया था । फिर भी, मैंने यह उत्तर देने के लिए अर्हता प्राप्त की है कि यह केवल सूचकांक पर लागू होता है।
अरस्तू पगलतज़िस

@SaschaGottfried स्पष्टीकरण के लिए धन्यवाद, मैं पहले भी संपादन के साथ डर गया था, लेकिन आपकी टिप्पणी ने इसे स्पष्ट कर दिया :)
मैक्स वॉन हिप्पेल

मैंने अपना पूरा फ़ोल्डर लगभग हटा दिया: S इसके बाद ... एक git reset HEAD folderनिश्चित सब कुछ कर रहा है ... लेकिन ऐसा करने से पहले, ऐसा करें git status folder, और यह सुनिश्चित करें कि यह उस फ़ोल्डर की सभी फ़ाइलों को 'डिलीट' कर दे
बेंगला

21

आप उपयोग करना चाहेंगे git rm --cached -r <dir>। यह कमांड इंडेक्स से मंचित निर्देशिका सामग्री को हटा देगा।

यदि निर्देशिका पहले से ही ट्रैक की गई थी, तो आपको नई और पुरानी फ़ाइलों को मैन्युअल रूप से ढूंढना होगा और उन्हें अस्थिर करना होगा ...

संभवतः इसके git reset <dir>बाद निर्देशिका के अंदर मौजूदा (और पहले से ट्रैक की गई) फ़ाइलों को रीसेट करने के लिए चलाएं ।


अपडेट 2019:

बस चलाते हैं git reset directory, यह सभी नई जोड़ी गई फ़ाइलों को अस्थिर करेगा।


git reset <dir>पर्याप्त नहीं है?
बनानच

@Bananach मैंने बस कोशिश की और ऐसा लगता है कि, हाँ, git reset <dir>यह भी काम करेगा। जवाब 2011 से है, इसलिए मुझे यकीन नहीं है कि अगर पहले से ही 8 साल पहले काम किया था। मैं जवाब अपडेट कर दूंगा। संकेत के लिए धन्यवाद!
प्रातः


11

अस्थिर निर्देशिका

$ git reset <dir>

उन सभी फ़ाइलों और फ़ोल्डरों को बंद कर देता है, जिनके साथ मैंने मंचित किया है:

$ git add <dir>

निर्देशिका की पुष्टि न करें

निर्देशिका और इसकी सामग्री को मंचन से हटाने की पुष्टि करने के लिए (अर्थात "परिवर्तन किए जाने के लिए"), नीचे चलाएं:

$ git status

या

$ git diff --staged --name-only 

यह पुष्टि करने के लिए कि पहले से बंद किए गए किसी भी फ़ोल्डर या फ़ाइलों का अभी भी मंचन नहीं किया गया है।


2

चरणबद्ध फ़ाइल / फ़ोल्डर को निकालने के लिए एक सरल आदेश, जो अभी तक प्रतिबद्ध नहीं है - git restore --staged <dir>

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.