कैसे .gitignore फ़ाइलों को पुनरावर्ती रूप से


106

मैं अपनी .gitignoreफ़ाइल में निम्न पैटर्न से बचने की कोशिश कर रहा हूं ।

MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js

हमने कोशिश की:

MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js

हालांकि यह काम नहीं किया। यह विंडोज पर गिट है। क्या चीजों को दोहराए बिना ऐसा करने का एक अधिक संक्षिप्त तरीका है?


जवाबों:


116

1.8.2 git के अनुसार, यह:

MyPrject/WebApp/Scripts/special/**/*.js

इस उत्तर के अनुसार काम करना चाहिए । यह मेरे लिए विंडोज 7 में Sourcetree 1.6.12.0 और git के संस्करण का उपयोग करके भी काम करता है जो इसे स्थापित करता है (1.8.4-पूर्वावलोकन20130916)।

एक निर्देशिका के तहत हर फ़ाइल और फ़ोल्डर को पुन: प्रस्तुत करने के लिए gitignore:

MyPrject/WebApp/Scripts/special/**

1.8 से पहले क्या होगा?
ashes999

1
यदि यह उत्तर काम नहीं करता है (विंडोज पर), /तो शुरुआत में चरित्र जोड़ें । उदाहरण:/MyProject/WebApp/Scripts/special/**/*.js
३६

3
मैं शर्मिंदा हूं कि मेरा जवाब तब तक उठता रहता है जब यह सचमुच दूसरे जवाब की एक कड़ी है ।
सैम

1
@ पुक: .gitignoreइस प्रश्न में रेपो रूट (मूल निर्देशिका /Webapp) का था।
ल्यूसिड_ड्रीमर

1
आपका उत्तर अच्छा लग रहा है, लेकिन निम्नलिखित मामलों में js को छोड़कर सभी फ़ाइलों को अनदेखा करने के लिए git 1.9.1 के साथ विंडोज 10 पर मेरे लिए काम नहीं किया गया: (पहली पंक्ति) foo/bar/*/*(दूसरी पंक्ति) !foo/bar/**/*.jsयह केवल एक स्तर के उपनिर्देशिकाओं के लिए काम करता था, लेकिन पुनरावर्ती नहीं।
LLL

19

निम्नलिखित gitignore मैनुअल पेज:

[...] git FNM_PATHNAME ध्वज के साथ fnmatch (3) द्वारा खपत के लिए उपयुक्त शेल गोला के रूप में पैटर्न को मानता है: पैटर्न में वाइल्डकार्ड pathname में a / match नहीं करेगा।

तो, यह स्पष्ट रूप से खड़ा है कि दो तारों के बीच की एक निश्चित मात्रा को निर्दिष्ट करने का कोई तरीका नहीं है , जैसे कि specialऔर js

फिर भी, आपके पास .gitignoreप्रति निर्देशिका में एक फ़ाइल हो सकती है , इसलिए हो सकता है कि आपके मामले में निम्नलिखित सामग्री हो

*.js

निम्नलिखित स्थान पर

MyPrject/WebApp/Scripts/special/.gitignore

पर्याप्त होगा?


मैं किया करते थे MyPrject/WebApp/Scripts/special*.jsऔर यह मिलान किया MyPrject/WebApp/Scripts/specialfile.jsऔर साथ ही MyPrject/WebApp/Scripts/special/a/b/c/file.js। हालाँकि, किसी कारण से व्यवहार बदल गया है और मेरा वर्तमान समाधान व्यक्तिगत रूप से निर्देशिकाओं को सूचीबद्ध करने के लिए है। मैं विंडोज के लिए GitHub का उपयोग कर रहा हूं।
orad

1
जैसेfind MyPrject/WebApp/Scripts/special -type d -printf 'echo "*.js" >> %h/.gitignore\n git add %h/.gitignore\n' | sh
jthill

9

यह मेरे लिए osx पर काम करता है।

lib64/**/__pycache__/
lib/**/__pycache__/
*.py[cod]
.ipynb_checkpoints/
**/.ipynb_checkpoints/
.DS_Store
**/.DS_Store

0

निष्पादित करने का प्रयास करें git rm -r --cached MyPrject/WebApp/Scripts/special/ आपकी उल्लिखित निर्देशिका गिट द्वारा कैश की गई हो सकती है और अनट्रैक की गई फ़ाइलों पर दिखाई देगी। कैश साफ़ करने के बाद सुनिश्चित करें कि आपने इसका उल्लेख किया है .gitignore

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