सबसे उत्तोलित उत्तर के रूप में प्रस्तुत समाधान गलत है, और आसानी से इस तरह के प्रदर्शन के रूप में।
अपलोड / * में सब कुछ अनदेखा करने के साथ शुरू करें:
mkdir -p uploads/rubbish/stuff/KEEP_ME
touch uploads/a uploads/rubbish/a uploads/rubbish/stuff/a uploads/rubbish/stuff/KEEP_ME/a
echo '/uploads/*' >> .gitignore
git init
git add .
git commit -m "Initial commit"
अब उपर्युक्त उपेक्षित सामग्री की मूल निर्देशिका को असाइन करें:
echo 'uploads/rubbish/stuff/KEEP_ME/' >> .gitignore
echo 'uploads/rubbish/stuff/KEEP_ME/*' >> .gitignore
git status -u
कोई भी फ़ाइल नहीं दिखाई गई।
इसे काम पर लाने के लिए, आपको uploads/
पेड़ के नीचे सभी फ़ाइलों को अनदेखा करने की आवश्यकता है ( uploads/**/*
न केवल शीर्ष स्तर uploads/*
) , और फिर उस पेड़ की सभी मूल निर्देशिकाओं को जोड़ें जिन्हें आप रखना चाहते हैं
echo '/uploads/**/*' > .gitignore
echo '!/uploads/rubbish/' >> .gitignore
echo '!/uploads/rubbish/stuff' >> .gitignore
echo '!/uploads/rubbish/stuff/KEEP_ME' >> .gitignore
echo '!/uploads/rubbish/stuff/KEEP_ME/*' >> .gitignore
git status -u
जो देता है:
On branch master
...
Untracked files:
(use "git add <file>..." to include in what will be committed)
uploads/rubbish/stuff/KEEP_ME/a
यदि हमने उपरोक्त uploads/*
में उपयोग किया था .gitignore
, तो सभी मध्यवर्ती फ़ाइलों को भी शामिल किया गया होगा, इसलिए उदाहरण के लिए uploads/rubbish/a
ऊपर की स्थिति में दिखाया जाएगा।