2009-06-13 14 views
81

किसी को भी पता है कि गिट द्वारा प्रबंधित फ़ाइल संरचना में किसी विशेष निर्देशिका के सभी उदाहरणों को अनदेखा करना संभव है या नहीं।गिट इग्नोरस और मेवेन लक्ष्य

मैं कई सबोडोड्यूल के साथ एक मेवेन प्रोजेक्ट में सभी 'लक्ष्य' फ़ोल्डर को बाहर करने के लिए देख रहा हूं। मुझे पता है कि मैं उनमें से प्रत्येक को शीर्ष स्तर पर स्पष्ट रूप से बहिष्कृत कर सकता हूं .gitignore, लेकिन मैं सचमुच उप निर्देशिकाओं में उदाहरण को अनदेखा करने के लिए **/target/* जैसे पैटर्न को निर्दिष्ट करने में सक्षम होना चाहूंगा?

क्या यह संभव है?

+0

आप इस कार्य को किस कॉन्फ़िगरेशन के साथ कर रहे हैं? * /। सेटिंग्स/* केवल 'xxx/.settings/*' को अनदेखा कर देगा, न कि '.settings/*' या 'xxx/yyy/.settings/*': अनदेखा पैटर्न को पुनरावर्ती रूप से लागू नहीं किया जा रहा है। यह भी देखें http://stackoverflow.com/questions/971465/git-ignore-certain-files-contained-in- विशिष्ट- फ़ोल्डर्स। – VonC

उत्तर

67

.gitignore फ़ाइल में पैटर्न का उपयोग करना संभव है। gitignore man page देखें। पैटर्न */target/* को लक्षित नाम और किसी भी निर्देशिका के तहत किसी भी निर्देशिका को अनदेखा करना चाहिए। या आप लक्ष्य के तहत सब कुछ अनदेखा करने के लिए */target/** आज़मा सकते हैं।

+4

धन्यवाद! यहां किसी और के लिए, एक .gitignore के लिए सामग्री है जो ususal maven और ग्रहण संदिग्धों को छोड़ने के लिए है। लक्ष्य/* */लक्ष्य/* .metadata * tar.gz .classpath .project * /। सेटिंग्स/* – sgargan

+2

क्या विन्यास आप इस काम कर रहे हैं साथ? * /। सेटिंग्स/* केवल 'xxx/.settings/*' को अनदेखा कर देगा, न कि '.settings/*' या 'xxx/yyy/.settings/*': अनदेखा पैटर्न को पुनरावर्ती रूप से लागू नहीं किया जा रहा है। यह भी देखें http://stackoverflow.com/questions/971465/git-ignore-certain-files-contained-in- विशिष्ट- फ़ोल्डर्स। – VonC

+4

बहु-मॉड्यूल परियोजनाओं के लिए आप _ **/target/_ का उपयोग करना चाह सकते हैं, लेकिन स्रोतों में वैध "लक्ष्य" निर्देशिकाओं को बाहर करने के लिए सावधान रहें – Bogdan

193

रूट निर्देशिका में फ़ाइल सभी उपनिर्देशिकाओं पर लागू होती है। मेरा यह दिखता है:

.classpath 
.project 
.settings/ 
target/ 

यह एक बहु-मॉड्यूल मेवेन प्रोजेक्ट में है। सभी submodules m2eclipse का उपयोग कर व्यक्तिगत ग्रहण परियोजनाओं के रूप में आयात कर रहे हैं। मेरे पास .gitignore फ़ाइलें नहीं हैं। वास्तव में, अगर आप gitignore man page में देखो:

पैटर्न पथ, या किसी मूल निर्देशिका में रूप में एक ही निर्देशिका में .gitignore फ़ाइल से पढ़ें ...

तो इस के लिए काम करना चाहिए आप।

+5

यह '*/target/*' से बेहतर उत्तर है। यह निर्देशिकाओं के पेड़ में स्थित एक निर्देशिका को बाहर करता है। लेकिन यह फ़ाइलों के लिए काम नहीं करेगा (http://stackoverflow.com/questions देखें/971465/गिट-अनदेखा-निश्चित-फाइल-निहित-विशिष्ट-फ़ोल्डर्स) – VonC

+0

(वैसे +1)। – VonC

+2

यदि आप इसे पढ़ना जारी रखते हैं तो कहते हैं, "ये पैटर्न .gitignore फ़ाइल के स्थान के सापेक्ष मेल खाते हैं।" आपका answear गलत है ... – user1387219

1

जैसा कि पहले ही अभिजीत द्वारा टिप्पणी में कहा आप जैसे लाइन जोड़ सकते हैं:

/target/** 

करने के लिए \.git\info\ फ़ोल्डर में फ़ाइल शामिल नहीं है।

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

संबंधित मुद्दे