मैंने .DS_Store को .gitignore फ़ाइल में जोड़ा है, लेकिन ऐसा लगता है कि यह केवल अनदेखा कर रहा है। रूट निर्देशिका में .DS_Store, प्रत्येक फ़ोल्डर और सबफ़ोल्डर में नहीं।
मैं यह कैसे तय करुं?
मैंने .DS_Store को .gitignore फ़ाइल में जोड़ा है, लेकिन ऐसा लगता है कि यह केवल अनदेखा कर रहा है। रूट निर्देशिका में .DS_Store, प्रत्येक फ़ोल्डर और सबफ़ोल्डर में नहीं।
मैं यह कैसे तय करुं?
जवाबों:
मुझे लगता है कि आपको जो समस्या हो रही है, वह यह है कि पहले की किसी गलती में, आपने गलती से .DS_Store फाइल को रिपॉजिटरी में जोड़ दिया है। बेशक, एक बार किसी फ़ाइल को आपकी रिपॉजिटरी में ट्रैक कर लेने के बाद, इसे तब भी ट्रैक किया जाता रहेगा, जब यह किसी .gitignore फ़ाइल में प्रविष्टि से मेल खाती है।
आपको मैन्युअल रूप से .DS_Store फ़ाइलों को हटाना होगा जो आपके रिपॉजिटरी में जोड़े गए थे। आप उपयोग कर सकते हैं git rm --cached .DS_Store
। एक बार हटाने के बाद, गिट को इसे अनदेखा करना चाहिए। आप केवल अपने जड़ .gitignore फ़ाइल में निम्न पंक्ति की आवश्यकता चाहिए: .DS_Store
। अवधि मत भूलना!
git rm --cached .DS_Store
केवल .DS_Store
वर्तमान निर्देशिका से निकालता है । आप रिपॉजिटरी से find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
सभी को हटाने के लिए उपयोग कर सकते हैं .DS_Stores
।
लगा टिप: चूंकि आप कभी भी .DS_Store फ़ाइलों को शामिल नहीं करना चाहते हैं, इसलिए एक वैश्विक नियम बनाएं। सबसे पहले, कहीं एक वैश्विक .gitignore फ़ाइल बनाएं, जैसे echo .DS_Store >> ~/.gitignore_global
। अब सभी खजाने के लिए इसका इस्तेमाल करने के Git बता: git config --global core.excludesfile ~/.gitignore_global
।
इस पृष्ठ ने मुझे आपके प्रश्न का उत्तर देने में मदद की: https://help.github.com/articles/ignoring-files
जोड़ना**/.DS_Store
में .gitignore
उप निर्देशिका के लिए
अगर .DS_Store
पहले से ही प्रतिबद्ध है:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
सभी भंडार में उन्हें अनदेखा करने के लिए: (कभी-कभी इसका नाम ._.DS_Store
)
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git rm --cached your_file
पहले का उपयोग करें
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
: stackoverflow.com/questions/18393498/…
-f
की जरूरत है अगर आप relavent फ़ोल्डर्स में खुली फाइलें हैं:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
यदि .DS_Store को आपके git रिपॉजिटरी में कभी नहीं जोड़ा गया, तो बस इसे अपनी .gitignore फ़ाइल में जोड़ें।
यदि आपके पास एक नहीं है, तो नामक एक फ़ाइल बनाएं
.gitignore
अपने एप्लिकेशन की रूट डायरेक्टरी में और बस लिखें
**/.DS_Store
में इस। यह आपके git में .DS_Store फ़ाइल को कभी भी चुपके नहीं होने देगा।
लेकिन, अगर यह पहले से ही है, तो अपने टर्मिनल में लिखें:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
फिर अपने दूरस्थ रेपो से .DS_Store को हटाने के लिए परिवर्तनों को प्रतिबद्ध और धक्का दें:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
और अब .DS_Store को अपनी .gitignore फ़ाइल में जोड़ें और फिर दोबारा कमिट करें और कोड के 2 अंतिम टुकड़ों के साथ पुश करें (git प्रतिबद्ध ..., git push ...)
*
या **
आप क्या हासिल करना चाहते हैं पर निर्भर करता। यह शेल को निर्देशिकाओं को नेविगेट करने का तरीका बताने का एक तरीका है। यह
आपकी .gitignore फ़ाइल को इस तरह दिखना चाहिए:
# Ignore Mac DS_Store files
.DS_Store
जब तक आप एक स्लैश को शामिल नहीं करते हैं, तब तक इसे सभी निर्देशिकाओं में फ़ाइल नाम के साथ मिलान किया जाता है। ( यहां से )
git rm --cached path/to/file/here
चरण 1, सभी *.DS_store
फ़ाइलों को हटा दें । एक दौड़ सकता है
git rm -f *.DS_Store
लेकिन ध्यान रखें कि rm -f
अगर आपके पास टाइपो है तो यह थोड़ा खतरनाक हो सकता है! चरण दो: जोड़ें
*.DS_Store
.DS_Store
.गीताग्नोर को। यह मेरे लिए काम किया!
आप --cached
स्थानीय .DS_store फ़ाइलों को बनाए रखने के लिए auco के उत्तर में ध्वज को भी जोड़ सकते हैं , जैसा कि एडवर्ड नेवेल ने अपने मूल उत्तर में उल्लेख किया है। संशोधित आदेश इस तरह दिखता है: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..चेकर और धन्यवाद!
$ git rm ./*.DS_Store
- सभी .DS_Store को git से निकालें$ echo \.DS_Store >> .gitignore
- भविष्य में .DS_Store पर ध्यान न देंप्रतिबद्ध और धक्का