क्या gitignore फाइल को अपडेट करने के बाद git रिपॉजिटरी को "रिफ्रेश" करना संभव है?
मैंने अभी-अभी अपने gitignore में और अधिक अज्ञानता (?) जोड़ी है और नई फाइल से मेल खाते रेपो में पहले से ही सामान को हटाना चाहूंगा।
क्या gitignore फाइल को अपडेट करने के बाद git रिपॉजिटरी को "रिफ्रेश" करना संभव है?
मैंने अभी-अभी अपने gitignore में और अधिक अज्ञानता (?) जोड़ी है और नई फाइल से मेल खाते रेपो में पहले से ही सामान को हटाना चाहूंगा।
जवाबों:
" .Ignignore फ़ाइल को अनदेखा नहीं करना " में वर्णित समाधान थोड़ा चरम है, लेकिन काम करना चाहिए:
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
( अपने परिवर्तनों को आप रखना चाहते हैं पहले प्रतिबद्ध करने के लिए सुनिश्चित करें के रूप में किसी भी घटना से बचने के लिए, jball037 टिप्पणी नीचे । विकल्प अपनी फ़ाइलें आपके डिस्क हालांकि पर अछूता रखना होगा।)--cached
आपके पास ब्लॉग पोस्ट में " पहले से ट्रैक की गई फाइलों को नजरअंदाज कर देना " के अलावा और भी बेहतरीन समाधान हैं :
git rm --cached `git ls-files -i --exclude-standard`
बसीम ने अपने संपादन में सुझाव दिया :
यदि आपको कोई त्रुटि संदेश मिलता है
fatal: path spec '...' did not match any files, जैसे कि उनके पथ में रिक्त स्थान वाली फ़ाइलें हो सकती हैं।आप विकल्प के साथ अन्य सभी फाइलें हटा सकते हैं
--ignore-unmatch:
git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`
लेकिन बेजोड़ फाइलें आपकी रिपॉजिटरी में रहेंगी और उन्हें दोहरे उद्धरण चिह्नों के साथ अपना रास्ता स्पष्ट करके हटा दिया जाएगा:
git rm --cached "<path.to.remaining.file>"
मुझे गलतफहमी हो सकती है, लेकिन क्या आप नई अनदेखी की गई फ़ाइलों को हटाने की कोशिश कर रहे हैं या आप इन फ़ाइलों में नए संशोधनों को अनदेखा करना चाहते हैं? इस मामले में, बात काम कर रही है।
यदि आप पहले से शुरू की गई अनदेखा फ़ाइलों को हटाना चाहते हैं, तो उपयोग करें
git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'
git ls-files -i –exclude-standard git कमिट -m 'क्लीन अप ``
मुझे पता है कि यह एक पुराना सवाल है, लेकिन अगर फ़ाइल के नाम में रिक्त स्थान हैं, तो ग्रेचस का समाधान काम नहीं करता है। रिक्त स्थान के साथ नाम दर्ज करने के लिए वॉनसी का समाधान उन्हें उपयोग करने से दूर नहीं करना है --ignore-unmatch, फिर उन्हें मैन्युअल रूप से हटा दें, लेकिन बहुत कुछ होने पर यह अच्छी तरह से काम नहीं करेगा।
यहां एक समाधान है जो सभी फ़ाइलों को कैप्चर करने के लिए बैश सरणियों का उपयोग करता है।
# Build bash array of the file names
while read -r file; do
rmlist+=( "$file" )
done < <(git ls-files -i --exclude-standard)
git rm –-cached "${rmlist[@]}"
git commit -m 'ignore update'