Git रिपॉजिटरी में .pyc फ़ाइलों को अनदेखा करें


107

मैं .pycgit में फ़ाइलों को कैसे अनदेखा कर सकता हूं ?

अगर मैं इसे डाल दिया तो .gitignoreयह काम नहीं करता है। मुझे उनकी आवश्यकता है कि उन्हें अनट्रैक किया जाए और कमिट की जांच न की जाए।


4
.itignignore को काम करना चाहिए। क्या आप इस समस्या को हल करने का प्रयास करने के लिए आपके द्वारा .OGignore में डाली गई लाइनों की एक प्रति प्रदान कर सकते हैं?
अल रिद्दोच

जवाबों:


41

अंदर डाल दो .gitignore। लेकिन gitignore(5)मैन पेज से:

  ·   If the pattern does not contain a slash /, git treats it as a shell
       glob pattern and checks for a match against the pathname relative
       to the location of the .gitignore file (relative to the toplevel of
       the work tree if not from a .gitignore file).

  ·   Otherwise, git treats the pattern as a shell glob suitable for
       consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in
       the pattern will not match a / in the pathname. For example,
       "Documentation/*.html" matches "Documentation/git.html" but not
       "Documentation/ppc/ppc.html" or
       "tools/perf/Documentation/perf.html".

इसलिए, या तो पूर्ण पथ को उपयुक्त *.pycप्रविष्टि के लिए निर्दिष्ट करें , या इसे .gitignoreरिपॉजिटरी रूट (समावेशी) से अग्रणी किसी भी निर्देशिका में एक फ़ाइल में डालें ।


6
बस किसी और को भ्रमित होने से बचने के लिए, मैन पेज की इग्नासियो की व्याख्या गलत है। आपको * .pyc को एक ही डायरेक्टरी में रखने की आवश्यकता नहीं है, यह एक पेरेंट डायरेक्टरी (या दादा-दादी, आदि) में डालने के लिए पर्याप्त है।
गॉडस्मिथ


241

आपको इसके साथ एक पंक्ति जोड़ना चाहिए:

*.pyc 

करने के लिए .gitignoreअपने Git भंडार पेड़ की जड़ फ़ोल्डर में फ़ाइल सही भंडार आरंभीकरण के बाद।

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

यदि आप एक लिनक्स सिस्टम (या "माता-पिता और बेटे" जैसे एक MacOSX) पर हैं, तो आप इसे केवल एक लाइन कमांड के साथ जल्दी से कर सकते हैं जिसे आपको रिपॉजिटरी की जड़ से निष्पादित करने की आवश्यकता है:

find . -name "*.pyc" -exec git rm -f "{}" \;

यह सिर्फ इसका मतलब है:

वर्तमान में शुरू होने वाली निर्देशिका से, उन सभी फ़ाइलों को ढूँढता हूँ जिनका नाम एक्सटेंशन के साथ समाप्त होता है .pyc, और फ़ाइल नाम को कमांड में पास करते हैंgit rm -f

बाद *.pycपता लगाया फ़ाइलों के रूप में Git से फाइल विलोपन, भंडार के लिए यह परिवर्तन के लिए प्रतिबद्ध है, और फिर आप अंततः जोड़ सकते हैं *.pycकरने के लिए लाइन .gitignoreफ़ाइल।

( http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ से अनुकूलित )


3
वैकल्पिक रूप से, फ़ाइलों को गिट से और अपने स्थानीय मशीन से हटाने के लिए, आप बस git rm --cached *.pycशीर्ष स्तर की निर्देशिका से कर सकते हैं । इसे यहाँ
अनुपम

मेरे पास यह मौजूद है, लेकिन एक बार जब आप .pyc फ़ाइलों को ट्रैक कर लेते हैं, तो वैसे भी इसे ट्रैक कर लिया जाता है, आपको पहले इन्हें हटाना चाहिए और आपके द्वारा भंडार में रखने के मामले में प्रतिबद्ध होना चाहिए
Mahmoud Hboubati

84

आपने संभवतः उन्हें डालने से पहले भंडार में जोड़ा *.pycहै .gitignore
पहले उन्हें भंडार से हटा दें।


3

मैं एक पूर्व पोस्ट के वाक्य का उपयोग करने की कोशिश करता हूं और पुनरावृत्ति से काम नहीं करता, तो कुछ मदद पढ़ें और इस लाइन को प्राप्त करें:

find . -name "*.pyc" -exec git rm -f "{}" \;

pd आवश्यक है * .it साफ करने के लिए .pignign फ़ाइल में .pyc जोड़ने के लिए

echo "*.pyc" >> .gitignore

का आनंद लें।


0

उत्तर के लिए @Enrico धन्यवाद।

ध्यान दें कि यदि आप virtualenv का उपयोग कर रहे हैं, तो आपके पास .pycवर्तमान में आपके द्वारा निर्देशिका में कई और फाइलें होंगी, जिन्हें उनके खोज कमांड द्वारा कैप्चर किया जाएगा।

उदाहरण के लिए:

./app.pyc
./lib/python2.7/_weakrefset.pyc
./lib/python2.7/abc.pyc
./lib/python2.7/codecs.pyc
./lib/python2.7/copy_reg.pyc
./lib/python2.7/site-packages/alembic/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/api.pyc

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

find "*.pyc" -exec git rm -f "{}" \;

यह सिर्फ app.pycगिट रिपॉजिटरी से फाइल को हटा देगा ।

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