.gitignore विशिष्ट फ़ाइल को बाहर करता है


94

मैं फ़ोल्डर में स्थित .gitignoreको बाहर करने के लिए फ़ाइल का उपयोग करने की कोशिश कर रहा हूं । मेरी फ़ाइल इस तरह दिखती है:templates.jspublic/app/.gitignore

/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js

लेकिन जब मैं गिट गुई में जांच करता हूं, तो templates.jsफ़ाइल अभी भी इसमें दिखाई देती है। मैं विशेष रूप से फ़ाइल का उपयोग करके कैसे निकाल सकता हूं .gitignore?


2
क्या इसका मतलब यह है कि फ़ाइल पहले से रिपॉजिटरी में पहले से जोड़ी गई है? .gitignoreकेवल जोड़े जाने वाली सामग्री को अनदेखा करता है।
विलेम वैन ओन्सेम

2
@CommuSoft हाँ, इसे पहले भंडार में जोड़ा गया है। तो, मैं इसे अभी कैसे बाहर कर सकता हूं? क्या मेरा करने का तरीका .gitignoreसही है?
user1995781

जवाबों:


152

इसके विपरीत "नाम" क्या सुझाव दे सकता है। .gitignoreकेवल तभी परामर्श किया जाता है जब आप git addफाइल करते हैं: दूसरे शब्दों में पहले से ही (रिपॉजिटरी) रिपॉजिटरी में शामिल की गई फ़ाइल को इसके आधार पर बाहर नहीं किया जाएगा .gitignore

पहले आप बेहतर तरीके से इसे संशोधित करते .gitignoreहैं कि फ़ाइल अब जोड़ी नहीं गई है। .gitignoreफ़ाइल में निम्न पंक्ति जोड़ें :

public/app/template.js

आगे आपको फ़ाइल को रिपॉजिटरी से बाहर करने की आवश्यकता है। संभवतः आप अपने फ़ाइल सिस्टम से फ़ाइल को हटाना नहीं चाहते हैं , यह इसके साथ किया जा सकता है:

git rm --cached public/app/template.js

--cachedझंडा फ़ाइल आपके फाइल सिस्टम से नहीं निकाला जाएगा सुनिश्चित करता है। (यदि महत्वपूर्ण नहीं है, तो आप उपयोग कर सकते हैं git rm public/app/template.js, लेकिन यह फ़ाइल को हटा देगा )।

पृष्ठभूमि

इसका कारण .gitignoreलगातार इस्तेमाल नहीं किया जाता है क्योंकि आप कभी-कभी ओवरराइड करना चाहते हैं .gitignore। उदाहरण के लिए मान लीजिए कि आप ट्रैक करने के लिए नहीं करना चाहती *.logफ़ाइलें, आप निर्दिष्ट कर सकते *.logमें .gitignore। लेकिन अगर कोई विशिष्ट है जिसे आप ट्रैक करना चाहते हैं तो आप जोड़ सकते हैं git add -f some.log-fझंडा बलों gitफ़ाइल जोड़ने के लिए।


एक जीवन रक्षक, मेरी साख जनता के लिए खुली थी
mLstudent33

21

एक बार फाइल रिपॉजिटरी में एक बार 'जोड़' दिए जाने के बाद, इसे .itignore फ़ाइल में सूचीबद्ध किया गया है या नहीं, इसकी परवाह किए बिना इसे ट्रैक किया जाना जारी रहेगा।

मैं अनुमान लगा रहा हूं कि आपने पहले टेम्पलेट। जेएस फाइल को जोड़ा है, इस मामले में यह ट्रैक किए गए परिवर्तनों को जारी रखेगा, जब तक आप इसे रिपॉजिटरी से नहीं हटाते हैं। एक बार जब फाइल रिपॉजिटरी से हटा दी जाती है, तो इसे .gitignore फाइल के माध्यम से ठीक से नजरअंदाज कर दिया जाएगा।

फ़ाइल को हटाने के बिना git रिपॉजिटरी (कमांड-लाइन) से निकालने का तरीका है

git rm --cached FILENAME

फिर एक बार जब आप ऐसा करते हैं और अपने gitignore में फाइल के साथ कमिट करने की कोशिश करते हैं, तो वह ऐसा नहीं करेगा।

ध्यान दें कि यदि आप विशेष रूप से एक फ़ाइल जोड़ते हैं जो आपके gitignore में है, तो फ़ाइल का आपका मैन्युअल जोड़ना gitignore को ओवरराइड कर देगा।


धन्यवाद प्रिय, "git rm - कैश की हुई FILENAME" ने आकर्षण की तरह काम किया :)
कमलेश

11

यदि आप पहले से ही एक फ़ाइल (उस git addपर git commit) ट्रैक कर रहे हैं , .gitignoreतो मदद नहीं करेगा।

मेरा मानना ​​है कि आप जो चाहते हैं वह किसी फ़ाइल को ट्रैक करना बंद करना है, और फिर.gitignore इसे बाहर करने के लिए उपयोग करना है। किसी फ़ाइल को ट्रैक करने से रोकने के लिए, लेकिन फ़ाइल को रखें:

git rm --cached <file>


DV नहीं, लेकिन मुझे लगता है कि आपको अपने शब्दों का चयन बेहतर तरीके से करना चाहिए। रिपॉजिटरी में रखें यह आपके स्थानीय फ़ाइल सिस्टम पर रखने के विपरीत थोड़ा सा है । एक रिपॉजिटरी एक फाइलसिस्टम पर मैप नहीं करता ...
विलेम वैन ओन्सेम

@CommuSoft कुछ संतुष्टि के लिए निश्चित है, मैं बहुत सावधान नहीं था क्योंकि अन्य लोगों ने इसका बेहतर उत्तर दिया है। सलाह के लिये धन्यवाद।
रॉस

7

इस मामले में आप के templates.jsसाथ ट्रैकिंग बंद कर सकते हैं

git rm --cached public/app/templates.js

जैसा कि दूसरों ने समझाया है, .gitignoreकेवल जोड़े जाने वाली सामग्री को अनदेखा करता है। उदाहरण के लिए, यदि आप अक्सर उपयोग करते हैं git add .और templates.jsआपके पास है .gitignore, तो गिट इसे नहीं जोड़ेंगे।

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