2012-10-09 8 views
20

मेरे पास कई प्रकार की विभिन्न फ़ाइलों के साथ एक निर्देशिका वृक्ष है। मूल निर्देशिका पर 300 निर्देशिकाएं हैं। प्रत्येक निर्देशिका में अन्य उप निर्देशिका हो सकती है।केवल एक फ़ाइल एक्सटेंशन को ट्रैक करने के लिए गिट कॉन्फ़िगर करें

मैं केवल सभी उप निर्देशिकाओं पर * .cocci को ट्रैक करना चाहता हूं। यहां मेरा .gitignore है:

* 
!*.cocci 

लेकिन यह काम नहीं करता है, क्योंकि उप निर्देशिकाओं पर फ़ाइलों को ट्रैक नहीं किया जाता है। मैं गिट कैसे बता सकता हूं कि मैं केवल सभी उप निर्देशिकाओं पर * .cocci को ट्रैक करना चाहता हूं?

+0

आप वास्तव में 'Git add'ed है फ़ाइलें:

आदेश directory के सभी उप-निर्देशिका में सभी *.cocci फ़ाइलों को खोजने के लिए निम्नलिखित में प्रवेश किया? बस '.gitignore' सेट अप करने से फ़ाइलों को ट्रैक नहीं किया जा सकता है ... – twalberg

+0

यदि मैं गिट एड-एफ का उपयोग करता हूं तो मैं केवल एक फ़ाइल जोड़ सकता हूं। यह सही प्रतीत नहीं होता है ... –

+0

[गिट में व्हाइटलिस्टिंग और उपनिर्देशिका] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/9162919/whitelisting-and-subdirectories-in-git) – daviesgeek

उत्तर

33

this question पढ़ें।

आप चाहते हैं:

# Blacklist everything 
* 
# Whitelist all directories 
!*/ 
# Whitelist the file you're interested in. 
!*.cocci 

ध्यान दें, यह केवल*.cocci फ़ाइलों को ट्रैक कर देंगे। आपका काम नहीं करता है क्योंकि आप सब कुछ (यह पहली पंक्ति है) को अनदेखा करते हैं, जो सभी उपनिर्देशिका को अनदेखा करता है।

+0

मैं अभी भी गिट स्थिति आउटपुट से खुश नहीं हूं क्योंकि यह अनचाहे फ़ोल्डर सामग्री नहीं दिखाता है लेकिन फ़िल्टर अब काम कर रहा है। धन्यवाद –

+0

क्या आप कृपया अपने उत्तर में टिप्पणियां बदल सकते हैं? उन्हें अपनी लाइनें शुरू करनी होंगी। यदि आप इसे एक .gitignore में पेस्ट करते हैं, तो यह काम नहीं करेगा (v.1.9.1 पर परीक्षण किया गया)। Http://git-scm.com/book/en/v2/Git-Basics- रिकॉर्डिंग-Changes-to-the-Repository#Ignoring-Files – panepeter

+1

आप श्वेतसूची भी करना चाहेंगे .gitignore –

-1

क्या आपने के बजाय !*/*.cocci को आजमाया है?

+0

टिप के लिए धन्यवाद, लेकिन वही परिणाम ... –

1

यह .gitignore में !dir द्वारा निर्देशिका अनदेखा न करें असंभव है, लेकिन फिर यह अभी भी हाथ से निर्देशिका जोड़ना संभव है:

git add dir -f 

तो .gitignore फ़ाइल लग रहा है, तो जैसे:

* 
!*.txt 

फिर जब आप git add . नई *.txt फ़ाइलों को तब जोड़ते हैं। नई निर्देशिका ऑटो जोड़ा नहीं होगा, यह git add dir -f

1

द्वारा हाथ से जोड़े जाने के लिए @simont जवाब का विस्तार करने के लिए, अगर हम एक दिया निर्देशिका के *.cocci फ़ाइलों और उसकी उप-मैं गलत तरीके से प्रवेश किया है | श्वेतसूची में चाहता था है:

directory/* 
!directory/*/ 
!directory/*.cocci 

ऐसा लगता है कि *.cocci फाइलें directory/subtree के अंतर्गत नहीं हैं।

directory/** 
!directory/*/ 
!directory/**/*.cocci 
संबंधित मुद्दे