मैं उन कष्टप्रद मैक ओएस एक्स .DS_Store
फ़ाइलों को एक गिट रिपॉजिटरी से कैसे निकाल सकता हूं ?
मैं उन कष्टप्रद मैक ओएस एक्स .DS_Store
फ़ाइलों को एक गिट रिपॉजिटरी से कैसे निकाल सकता हूं ?
जवाबों:
मौजूदा फ़ाइलों को रिपॉजिटरी से निकालें:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
लाइन जोड़ें
.DS_Store
फ़ाइल के लिए .gitignore
, जो आपके रिपॉजिटरी के शीर्ष स्तर पर पाया जा सकता है (या यदि यह पहले से ही नहीं है तो बनाया गया है)। आप शीर्ष निर्देशिका में इस कमांड के साथ आसानी से कर सकते हैं
echo .DS_Store >> .gitignore
फिर
git add .gitignore
git commit -m '.DS_Store banished!'
-exec
लॉन्च होगा git-rm
, जबकि xargs
सभी रास्तों को एक कमांड लाइन पर रखा जाएगा। ज्यादातर मैं पसंद करता हूं xargs
क्योंकि मुझे बहुत सारे विशेष पात्रों से बचने की चिंता नहीं है।
.DS_Store
लिए .gitignore
पुनरावर्ती काम करता है ? यही है, क्या यह भी अनदेखा करेगा some/level/of/folders/.DS_Store
?
बेंज़ादो और वेबमैट के उत्तरों को संयोजित करना, अपडेट करना git rm
, उन फ़ाइलों पर विफल होना, जो रेपो में नहीं हैं, और इसे किसी भी उपयोगकर्ता के लिए पेस्ट-सक्षम बनाते हैं:
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
~/.gitignore
मेरी वैश्विक बहिष्कृत फ़ाइल के रूप में दर्द हो रहा है। ऐसी फाइलें हैं जिन्हें मैं अपनी होम निर्देशिका से बाहर करना चाहता हूं जिन्हें मैं वैश्विक रूप से अनदेखा नहीं करना चाहता। मैं ~/.gitexcludes
एक ही निर्देश के माध्यम से उपयोग करता हूं :core.excludesfile
इस समस्या से निपटने के लिए सबसे अच्छा उपाय यह है कि ग्लोबली इन फाइलों को आपके सिस्टम के सभी गिट रिपोज से अनदेखा कर दें। यह एक वैश्विक gitignore फ़ाइल बनाकर किया जा सकता है जैसे:
vi ~/.gitignore_global
फ़ाइलों को अनदेखा करने के लिए नियम जोड़ना:
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
अब, इस फ़ाइल को अपने वैश्विक git config में जोड़ें:
git config --global core.excludesfile ~/.gitignore_global
संपादित करें:
हटाए गए प्रतीक, क्योंकि उन्हें आवेदन संपत्ति के रूप में प्रतिबद्ध होने की आवश्यकता हो सकती है।
कुछ स्थितियों में आप विश्व स्तर पर कुछ फ़ाइलों को अनदेखा करना चाह सकते हैं। मेरे लिए .DS_Store उनमें से एक है। ऐसे:
git config --global core.excludesfile /Users/mat/.gitignore
(या अपनी पसंद की कोई फाइल)
फिर एक रेपो की तरह फ़ाइल को संपादित करें .itignore। ध्यान दें कि मुझे लगता है कि आपको एक पूर्ण पथ का उपयोग करना होगा।
यदि आप फ़ाइलों को हटाने में असमर्थ हैं क्योंकि उनके पास चरणबद्ध उपयोग में परिवर्तन हैं:
git rm --cached -f *.DS_Store
टर्मिनल खोलें और "cd <ProjectPath>" टाइप करें
मौजूदा फ़ाइलें निकालें:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
इसे जोड़ो .DS_Store
टाइप करें "ctrl + x"
"Y" टाइप करें
फ़ाइल सहेजने के लिए दर्ज करें
git add .gitignore
git commit -m '.DS_Store removed.'
nano .gitignore
यदि मौजूद नहीं है तो फाइल बनाता है, इस कमांड को प्रोजेक्ट रूट फोल्डर
शीर्ष मतदान का उत्तर बहुत बढ़िया है, लेकिन मेरे जैसे बदमाशों को बाहर निकालने में मदद करना, यहाँ है कि .ignignore फ़ाइल कैसे बनाई जाए, इसे संपादित करें, इसे सहेजें, उन फ़ाइलों को हटा दें जिन्हें आपने पहले ही गिट में जोड़ दिया होगा, फिर फ़ाइल को Github पर पुश करें।
.Gitignore फ़ाइल बनाएँ
.Gitignore फ़ाइल बनाने के लिए, आप केवल touch
वह फ़ाइल रख सकते हैं जो निर्दिष्ट नाम के साथ एक रिक्त फ़ाइल बनाती है। हम .gitignore नाम की फ़ाइल बनाना चाहते हैं ताकि हम कमांड का उपयोग कर सकें:
touch .gitignore
फाइलों पर ध्यान न दें
अब आपको उस लाइन को जोड़ना होगा जो आपके .itignore को DS Store फ़ाइलों को अनदेखा करने के लिए गिट को बताती है। ऐसा करने के लिए आप नैनो संपादक का उपयोग कर सकते हैं।
nano .gitignore
नैनो अच्छा है क्योंकि इसमें इससे बाहर निकलने के निर्देश शामिल हैं। ( Ctrl- Oबचाने के लिए, Ctrl- Xबाहर निकलने के लिए)
इस Github gist के कुछ विचारों को कॉपी और पेस्ट करें जो अनदेखी करने के लिए कुछ सामान्य फ़ाइलों को सूचीबद्ध करते हैं। इस प्रश्न का उत्तर देने के लिए सबसे महत्वपूर्ण हैं:
# OS generated files #
######################
.DS_Store
.DS_Store?
# टिप्पणी कर रहे हैं, और यह बढ़ने पर आपकी फ़ाइल को व्यवस्थित करने में आपकी सहायता करेगा।
इस गितूब लेख में कुछ सामान्य विचार और दिशानिर्देश भी हैं।
पहले से ही जोड़ दी गई फ़ाइलों को निकालें
अंत में, आपको वास्तव में उन डीएस स्टोर फ़ाइलों को अपनी निर्देशिका से हटाने की आवश्यकता है।
शीर्ष मतदान उत्तर से इस महान आदेश का उपयोग करें। यह आपकी निर्देशिका में सभी फ़ोल्डरों के माध्यम से जाएगा, और उन फ़ाइलों को गिट से हटा देगा।
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
गितुब तक पुश .ignignore
अंतिम चरण, आपको वास्तव में अपनी .gitignore फ़ाइल बनाने की आवश्यकता है।
git status
git add .gitignore
git commit -m '.DS_Store banished!'
उन्हें git-rm
हटाकर उपयोग करें , और फिर उन्हें जोड़ने .gitignore
से रोकने के लिए .DS_Store जोड़ें । आप इन सबको एक साथ बनाने से रोकने के लिए ब्लूहैस्टवर्क का भी उपयोग कर सकते हैं
यदि आप DS_Store फ़ाइलों को प्रत्येक फ़ोल्डर और सबफ़ोल्डर में हटाना चाहते हैं:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
उन्हें अनदेखा करें:
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
निम्नलिखित ने मेरे लिए सबसे अच्छा काम किया। बेमिसाल फाइलें, और स्थानीय संशोधनों के साथ फाइलें संभाला। संदर्भ के लिए, यह एक मैक 10.7 सिस्टम पर चल रहा था जो 1.7.4.4 पर चल रहा था।
खोजें और निकालें:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
मैं एक वैश्विक core.excludesfile सेट करके सभी रिपॉजिटरी में .DS_Store को विश्व स्तर पर अनदेखा करता हूं।
सबसे पहले, फ़ाइल बनाएं (यदि कोई पहले से मौजूद नहीं है):
touch ~/.gitignore
फिर निम्न पंक्ति जोड़ें और सहेजें:
.DS_Store
अब विश्व स्तर पर फ़ाइल का सम्मान करने के लिए git कॉन्फ़िगर करें:
git config --global core.excludesfile ~/.gitignore
मैंने पाया कि स्निप्ल्र से निम्न पंक्ति सभी को मिटा देने पर सबसे अच्छा करती है .DS_Store
, जिसमें एक स्थानीय संशोधन भी शामिल है।
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
विकल्प, अपने स्थानीय रखता है .DS_Store
क्योंकि यह वैसे भी पुन: पेश किया जा रहा है।
और जैसा कि ऊपर उल्लेख किया गया है, .DS_Store
अपने प्रोजेक्ट के रूट पर .gitignore फ़ाइल जोड़ें । तब यह आपकी दृष्टि में नहीं होगा (रेपो के)।
मैं पार्टी में थोड़ा लेट हूं, लेकिन मेरे पास एक अच्छा जवाब है। .DS_Store फ़ाइलों को निकालने के लिए, टर्मिनल विंडो से निम्न कमांड का उपयोग करें, लेकिन 'खोजने' वाली फ़ाइलों को हटाने में बहुत सावधानी बरतें। -नाम विकल्प के साथ एक विशिष्ट नाम का उपयोग करना इसका उपयोग करने के लिए सुरक्षित तरीकों में से एक है:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
यदि आप बस उन्हें पहले और बाद में सूचीबद्ध करना चाहते हैं तो आप "-प्लेट" को छोड़ सकते हैं। वे आपको आश्वस्त करेंगे कि वे चले गए हैं।
~ / .Gitignore_global सलाह के संबंध में: यहां सावधान रहें। आप उस अच्छी फ़ाइल को .gignignore में प्रत्येक वर्करी के शीर्ष स्तर के भीतर रखना चाहते हैं और इसे कमिट करते हैं, ताकि जो कोई भी आपके रेपो का क्लोन बनाए, उसे इसके उपयोग का लाभ मिले।
यह काम करेगा:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
यह उन सभी फाइलों को हटा देता है .DS_Store
, जिनके नाम सहित समाप्त हो जाते हैं ._.DS_Store
।
"*.DS_Store"
, ताकि तारांकन find
द्वारा शेल को विस्तारित करने के बजाय पास किया जाए।
इसने मेरे लिए काम किया, ऊपर से दो उत्तरों का कॉम्बो:
इस समस्या को हल करने के लिए कुछ उपाय हैं। बनाने से बचने के लिए .DS_Store फाइलें, फ़ोल्डर्स को देखने के लिए OS X फाइंडर का उपयोग न करें। फ़ोल्डर्स को देखने का एक वैकल्पिक तरीका UNIX कमांड लाइन का उपयोग करना है। .DS_Store फ़ाइलों को निकालने के लिए DS_Store टर्मिनेटर नामक एक तृतीय-पक्ष उत्पाद का उपयोग किया जा सकता है। पूरे सिस्टम से .DS_Store फ़ाइलों को हटाने के लिए एक UNIX शेल कमांड का उपयोग किया जा सकता है। एप्लिकेशन से टर्मिनल लॉन्च करें: उपयोगिताएँ UNIX शेल प्रॉम्प्ट पर निम्नलिखित UNIX कमांड दर्ज करें: sudo find / -name ".DS_Store" -depth -exec rm {} \; जब पासवर्ड के लिए कहा जाए तो Mac OS X एडमिनिस्ट्रेटर पासवर्ड डालें।
यह कमांड संपूर्ण मशीन के माध्यम से फाइल सिस्टम के रूट (/) से शुरू होने वाली .DS_Store की सभी घटनाओं को खोजने और निकालने के लिए है। एक निर्धारित कार्य के रूप में चलाने के लिए इस कमांड को कॉन्फ़िगर करने के लिए नीचे दिए चरणों का पालन करें: एप्लिकेशन से टर्मिनल लॉन्च करें: उपयोगिताएँ UNIX शेल प्रॉम्प्ट पर निम्न UNIX कमांड दर्ज करें:
sudo crontab -e जब पासवर्ड के लिए कहा जाए तो Mac OS X व्यवस्थापक पासवर्ड दर्ज करें। Vi संपादक में एक बार अपने कीबोर्ड पर I अक्षर को एक बार दबाएं और निम्नलिखित दर्ज करें:
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
इसे क्रॉस्टैब प्रविष्टि कहा जाता है, जिसमें निम्न प्रारूप है:
मिनट का समय DayOfMonth महीना DayOfWeek उपयोगकर्ता कमांड।
क्रॉस्टैब एंट्री का मतलब है कि कमांड को सिस्टम द्वारा स्वचालित रूप से 1:15 AM पर रूट नाम के अकाउंट द्वारा निष्पादित किया जाएगा।
आदेश सभी तरह से खोजने के लिए शुरू होता है। यदि सिस्टम नहीं चल रहा है तो यह कमांड निष्पादित नहीं होगा।
प्रविष्टि को सहेजने के लिए एक बार Esc कुंजी दबाएं, फिर एक साथ Shift + z + z दबाएं।
नोट: चरण 4 में जानकारी केवल vi संपादक के लिए है।
इसे अपनी फ़ाइल में जोड़ें
#Ignore folder mac
.DS_Store
इसे सहेजें और कमिट करें
git add -A
git commit -m "ignore .DS_Store"
और अब आप अपने सभी कामों के लिए इसे अनदेखा कर दें
इस फ़ाइल से हमेशा के लिए छुटकारा पाने के लिए और फिर कभी इसके बारे में चिंता करने का सबसे अच्छा तरीका है
एक वैश्विक .gitignore फ़ाइल बनाएँ:
इको .DS_Store >> ~ / .gitignore_global
और आपको बता दें कि आप इस फाइल को अपने सभी रिपॉजिटरी के लिए इस्तेमाल करना चाहते हैं:
git config --global core.excludesfile ~ / .gitignore_global और यह बात है! .DS_Store आपे से बाहर है।
.DS_STORE
स्थानीय स्तर पर हटाने की आवश्यकता नहीं है
बस इसे .gitignore
फ़ाइल में जोड़ें
.Itignore फ़ाइल एक पाठ फ़ाइल है जो Git को बताती है कि कौन सी परियोजना में फ़ाइलों या फ़ोल्डरों को अनदेखा करना है।
आदेश
nano .gitignore
.DS_Store
फिर लिखें पर क्लिक करेंCTRL+X > y > Hit Return
git status
अपने परिवर्तनों को अंतिम रूप देने के लिएgit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master