अस्थायी रूप से गिट से फ़ाइलों को अनट्रैक करें


450

मैंने अपनी मशीन पर स्थानीय गिट स्थापित किया है। जब मैंने git को इनिशियलाइज़ किया, तो मैंने प्री-कम्पाइल किए गए लिबास और बायनेरिज़ को जोड़ा। हालाँकि, अब मेरे विकास के दौरान मैं उन फाइलों को रुक-रुक कर जांचना नहीं चाहता। मैं रेपो से इन फ़ाइलों को निकालना नहीं चाहता। जब तक मैं अपना विकास पूरा नहीं कर लेता, क्या इन फाइलों पर नज़र रखने का कोई तरीका नहीं है। (मुझे लगता है कि मैं .गितिग्नोर का उपयोग नहीं कर सकता क्योंकि यह केवल उन फाइलों के लिए काम करता है जो गिट में नहीं हैं। मैं अस्थायी रूप से फाइलों की ट्रैकिंग को अक्षम करना चाहता हूं।)



जवाबों:


723

git अपडेट-इंडेक्स को वही करना चाहिए जो आप चाहते हैं

यह आपको बताएगा कि आप फ़ाइल के परिवर्तनों को अनदेखा करना शुरू करना चाहते हैं
git update-index --assume-unchanged path/to/file

जब आप फिर से ट्रैक रखना शुरू करना चाहते हैं
git update-index --no-assume-unchanged path/to/file

Github प्रलेखन: अद्यतन-सूचकांक


3
अंत में एक आदेश जो वास्तव में मेरे गलती से प्रतिबद्ध-देव-फ़ाइल के लिए काम करता है, धन्यवाद :)
रिचर्ड डे विट

15
Gm rm -r --cached <file> क्यों नहीं?
एहसान

23
@ ऐसा लगता git rm --cachedहै कि अन्य मशीनों पर स्थानीय प्रतियों को हटा दिया जाएगा, जहां एक ही शाखा को उनके अगले पुल पर जांचा जाता है। देखें arlocarreon.com/blog/git/… और विशेष रूप से इसके नीचे की चर्चा।
मीत

3
मेरे लिए काम नहीं कर रहा है, जब मैं फ़ाइल में बदलाव करता हूं तो इसमें अभी भी शामिल बदलाव शामिल हैं। मैं बाहर कर सकता था, लेकिन फिर कुछ बिंदु पर यह संभवतः गलती से जोड़ा जाएगा।
MrFox

8
इस उद्देश्य के लिए मान-अपरिवर्तित नहीं था। शायद इस सूत्र
Appy

264

आप अपनी फ़ाइलों को अनट्रैक के बाद रख सकते हैं

git rm -r --cached <file>

के साथ अपनी फ़ाइलें जोड़ें

git add -u

उन्हें धक्का या जो कुछ भी तुम चाहते हो।


19
यह वास्तव में सही उत्तर है: git-scm.com/book/en/v2/… के
एहसान

git rm --cached .DS_Store फिर यह प्रिंट करता है rm '../.DS_Store'और स्थानीय फ़ाइल को हटा दिया जाता है ??! ( git version 2.6.4 (Apple Git-63))
वीशी ज़ेंग


4
यह सही उत्तर नहीं है क्योंकि यह फ़ाइल को स्रोत में निकाल देगा। ओपी उस फाइल के स्थानीय बदलावों को नजरअंदाज करना चाहता है, इसके लिए पूरी तरह से ट्रैकिंग नहीं हटा रहा है
cjsimon

2
चेतावनी: यह उन फ़ाइलों को हटा देगा जिन्हें आप अनट्रैक करना चाहते हैं। समाधान सभी फ़ाइलों को कहीं और कॉपी करना है, और उन्हें कमिट के बाद वापस कॉपी करना है।
Psad

111
git rm --cached

हालाँकि, आपको पहले स्थान पर संकलित बायनेरिज़ और बाहरी निर्भरता नहीं करनी चाहिए। इसके बजाय उन्हें खींचने के लिए बुंडलर जैसे टूल का उपयोग करें।


2
न -r विकल्प (पुनरावर्ती) भूल निर्देशिकाओं के लिए: Git rm -r --cached
अनातोलीय Shuba


7

Git-book में इसका उल्लेख खंड 2.4: "अनडूइंग थिंग्स" में किया गया है। मूल रूप से, आपको जो करना है, वह कुछ फ़ाइलों के लिए इंडेक्स की स्थिति को HEAD स्थिति में रीसेट कर सकता है, जो कि नवीनतम चेकआउट (या कमिट) की स्थिति में है। यह फ़ाइल को वर्तमान अनुक्रमणिका में स्टेज करता है। इस कार्य के लिए कमांड है git reset। [१]

इसलिए, आपको जिस कमांड को निष्पादित करना है, वह है:

git reset HEAD /path/to/file

Git के नए संस्करण (मेरा मानना ​​है कि 1.6 या इसके बाद से) इस कमांड (और कई और) को निष्पादित करते समय एक टिप के रूप में देता है git status। ये संस्करण बहुत उपयोगकर्ता के अनुकूल हैं। एक व्यक्तिगत टिप: यदि आप केवल कुछ फ़ाइलों का उपयोग कर रहे हैं, तो उपयोग करें git add -i। यह इंटरैक्टिव स्टेजिंग टूल लॉन्च करेगा, जो विशेष रूप से आसान बनाता है। इसके अलावा, मैं पुस्तक को पढ़ने की अत्यधिक सलाह देता हूं, क्योंकि यह व्यावहारिक स्थितियों में गिट के उपयोग पर बहुत स्पष्ट है।

[१] http://www.git-scm.com/book


मैं मानता हूं कि git reset [file]फ़ाइलों को अस्थिर करने का सबसे सीधा तरीका है।
स्पेक्ट्रल

18
पूर्ववत करना और हटाना अलग चीजें हैं
Jaime Sangcap

6

मूल प्रश्न का उत्तर नहीं। लेकिन यह किसी की मदद कर सकता है।

आपके द्वारा किए गए परिवर्तनों को देखने के लिए ( पता है कि कौन सी फाइलें --assume-अपरिवर्तित के रूप में चिह्नित हैं )

git ls-files -v

फ़ाइलों की परिणामी सूची में एक वर्ण के साथ एक उपसर्ग होगा (उदा: H या h) यदि यह लोअरकेस (यानी h) है तो फ़ाइल को चिह्नित किया गया था --assume-अपरिवर्तित


5

मैं यह मान रहा हूं कि आप पूछ रहे हैं कि बिल्ड फ़ोल्डर या बिन फ़ोल्डर में सभी फ़ाइलों को कैसे हटाएं , बल्कि प्रत्येक फ़ाइलों को अलग से चुनने के बजाय।

आप इस आदेश का उपयोग कर सकते हैं:

git rm -r -f /build\*

सुनिश्चित करें कि आप निर्माण निर्देशिका के मूल निर्देशिका में हैं।
यह कमांड उन सभी फाइलों को पुन: "डिलीट" कर देगा, जो बिन / या बिल्ड / फोल्डर में हैं। शब्द हटाने से मेरा मतलब है कि git यह दिखावा करेगा कि उन फ़ाइलों को "हटा दिया गया" है और उन फ़ाइलों को ट्रैक नहीं किया जाएगा। Git वास्तव में उन फ़ाइलों को हटाने की विधि में चिह्नित करता है।

यह सुनिश्चित करें कि आपके पास आपका .gitignore आने वाले कमिट्स के लिए तैयार है।
प्रलेखन: गिट rm


1

git रीसेट [फ़ाइल]

स्टेजिंग एरिया से वर्किंग डाइरेक्टरी तक फाइल वापस लाएं

मैं अक्सर अपने नोड मॉड्यूल को .gitignore फ़ाइल में जोड़ना भूल जाता हूं, इससे समस्या हल हो जाती है।



1

सभी अनट्रैक फ़ाइलों को निकालने के लिए। इस टर्मिनल कमांड का प्रयास करें

 git clean -fdx

यह डिस्क से फ़ाइलों को हटा देगा और गिट इतिहास से नहीं।
लियोनार्डो

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