जिस तरह से आप किसी विशेष dir / फ़ाइल को देखने / ट्रैकिंग पर ध्यान नहीं देते हैं। आप बस इसे चलाते हैं:
git update-index --assume-unchanged <file>
अब आप इसे पूर्ववत कैसे करते हैं ताकि उन्हें फिर से देखा जाए? (चलो इसे संयुक्त राष्ट्र मान लेते हैं।)
जिस तरह से आप किसी विशेष dir / फ़ाइल को देखने / ट्रैकिंग पर ध्यान नहीं देते हैं। आप बस इसे चलाते हैं:
git update-index --assume-unchanged <file>
अब आप इसे पूर्ववत कैसे करते हैं ताकि उन्हें फिर से देखा जाए? (चलो इसे संयुक्त राष्ट्र मान लेते हैं।)
जवाबों:
पूर्ववत करने के लिए / dir की ऐसी फ़ाइलें दिखाएं जो मान लें-अपरिवर्तित हैं, इसे चलाएं :
git update-index --no-assume-unchanged <file>
इसे assume-unchangedचलाने के लिए dir / फ़ाइलों की सूची प्राप्त करने के लिए :
git ls-files -v|grep '^h'
git ls-files -v|grep '^h'|cut -c3-, जो आपको "एच" उपसर्ग के बिना, केवल फ़ाइल नाम देगा।
assume-unchanged, बस उपयोग करते हैं git update-index --really-refresh। उस आदेश के साथ, आपको git ls-filesपहले फ़ाइलों के लिए देखने की आवश्यकता नहीं है ।
यदि यह एक आदेश है जिसे आप अक्सर उपयोग करते हैं - आप इसके लिए एक उपनाम होने पर भी विचार कर सकते हैं। अपने वैश्विक में जोड़ें .gitconfig:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
एक उपनाम कैसे सेट करें (यदि आप पहले से नहीं जानते हैं):
git config --configLocation alias.aliasName 'command --options'
उदाहरण:
git config --global alias.hide 'update-index --assume-unchanged'
git config... etc
इसे अपने पास सहेजने के बाद .gitconfig, आप एक क्लीनर कमांड चला सकते हैं।
git hide myfile.ext
या
git unhide myfile.ext
यह गिट प्रलेखन बहुत मददगार था।
टिप्पणियों के अनुसार, यह पता लगाने के लिए भी एक उपयोगी उपनाम है कि वर्तमान में क्या फाइलें छिपी हुई हैं:
[alias]
hidden = ! git ls-files -v | grep '^h' | cut -c3-
hidden = ! git ls-files -v | grep '^h' | cut -c3-
git अपडेट-इंडेक्स फ़ंक्शन में कई विकल्प हैं जिन्हें आप नीचे टाइप कर सकते हैं:
git update-index --help
यहां आपको विभिन्न विकल्प मिलेंगे - फ़ंक्शन अपडेट-इंडेक्स के साथ कैसे संभालना है।
[यदि आप फ़ाइल का नाम नहीं जानते हैं]
git update-index --really-refresh
[यदि आप फ़ाइल का नाम जानते हैं]
git update-index --no-assume-unchanged <file>
के माध्यम से अनदेखी की गई सूची में जोड़े गए सभी फाइलों को वापस कर देंगे।
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>मेरे जीवन को बचाया .. ठीक है, मैं बस फिर से फ़ोल्डर को सिंक कर सकता हूं, लेकिन मुझे इस समस्या का "वास्तविक" समाधान चाहिए था।
अतिरिक्त दस्तावेज़ लिंक और संक्षिप्त उपनाम के साथ @adardesign, @adswebwork और @AnkitVishwakarma से उत्कृष्ट मूल उत्तरों और @Bdoserror, @Retsam, @seanf, और @torek से टिप्पणियों को संश्लेषित करने के लिए ...
बेसिक कमांड्स
ऐसी फ़ाइल को रीसेट करने के लिए जो मान-अपरिवर्तित वापस सामान्य है:
git update-index --no-assume-unchanged <file>
मान-अपरिवर्तित सभी फ़ाइलों को सूचीबद्ध करने के लिए :
git ls-files -v | grep '^[a-z]' | cut -c3-
सभी मान-अपरिवर्तित फ़ाइलों को वापस सामान्य पर रीसेट करने के लिए:
git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
नोट: यह कमांड जिसे कहीं और सूचीबद्ध किया गया है, किसी भी लंबे समय तक अपरिवर्तित सभी फ़ाइलों को रीसेट करने के लिए प्रकट नहीं होता है (मुझे विश्वास है कि यह इसका उपयोग करता था और पहले इसे एक समाधान के रूप में सूचीबद्ध किया गया था):
git update-index --really-refresh
शॉर्टकट
इन सामान्य कार्यों को git में निष्पादित करना आसान बनाने के लिए , अपने उपयोगकर्ता के लिए निम्न उपनाम अनुभाग जोड़ें / अपडेट .gitconfigकरें (जैसे ~/.gitconfigकि * nix या macOS सिस्टम पर):
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = ! git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-
git hidden, आप शेल उपनामों या लिपियों के बिना एक ही प्रभाव प्राप्त कर सकते हैं, !इस तरह का उपयोग कर :hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refreshनहीं करता है (या अब नहीं करता है, शायद यह एक बार किया था) सूचकांक फाइलों पर मान्य-अपरिवर्तित झंडे को साफ करें।
यदि आप उन सभी फ़ाइलों को पूर्ववत् करना चाहते हैं जिन्हें लागू किया गया था, तो किसी भी स्थिति से अपरिवर्तित मान लिया गया था, न केवल कैश नहीं किया गया (उन्हें निचले मामले में चरित्र द्वारा चिह्नित किया गया), आप निम्न कमांड का उपयोग कर सकते हैं:
git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
git ls-files -v अपनी स्थिति के साथ सभी फाइलों को प्रिंट करेगाgrep '^[a-z]' फ़ाइलों को फ़िल्टर करेगा और केवल अपरिवर्तित मान का चयन करेगाcut -c 3- स्थिति को हटा देगा और केवल पथ छोड़ देगा, 3-आरडी चरित्र से अंत तक काट करtr '\012' '\000' पंक्ति वर्ण (\ 012) के अंत को शून्य वर्ण (\ 000) में बदल देगाxargs -0 git update-index --no-assume-unchangedgit update-index --no-assume-unchangedपूर्ववत करने के लिए शून्य वर्ण द्वारा अलग किए गए सभी पथों को पास करेगाको जोड़ना @adardesignहै इस सवाल का जवाब है, अगर आपको लगता है कि करने के लिए जोड़ दिया गया है सभी फाइलों को रीसेट करना चाहते assume-unchangedकरने के लिए सूची no-assume-unchangedएक ही बार में, आपको निम्न कर सकते हैं:
git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true
यह सिर्फ grep से दो वर्ण आउटपुट को स्ट्रिप करेगा "h ", फिर फ़ाइल नामों में मौजूद किसी भी स्थान से बच सकता है, और अंत || trueमें कमांड को समय से पहले समाप्त करने से रोक देगा अगर कुछ फ़ाइलों में लूप में त्रुटियां हैं।
यदि आप Git एक्सटेंशन का उपयोग कर रहे हैं , तो नीचे दिए गए चरणों का पालन करें:
आप कर चुके हैं।
यहां ऐसा कुछ भी नहीं है जो कवर न हो। लेकिन मेरे 2 सेंट जोड़ना चाहेंगे। कई बार, मैं एक बिल्ड चलाता हूं और यह बहुत सारी फाइलें बदल देता है और फिर मैं किसी चीज पर काम करना चाहता हूं, इसलिए यह कमांड वास्तव में मेरी बहुत मदद करता है।
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
आशा है कि किसी और को भी यह उपयोगी लगता है।
.gitignoreअपनी बिल्ड कलाकृतियों को अनदेखा करने से फायदा होगा ।
.gitignoreकई बार है, लेकिन मेरे अनुभव में यह पर्याप्त नहीं है। लेकिन मैं उस संदर्भ को समझता हूं जिसमें आप यह कह रहे हैं।
किसी भी समाधान ने मेरे लिए विंडोज में काम नहीं किया - यह फ़ाइल की स्थिति के Hबजाय पूंजी का उपयोग करने के लिए लगता है hऔर grep कमांड के लिए अतिरिक्त कैरेट की आवश्यकता होती है क्योंकि ^यह लाइन की शुरुआत का प्रतिनिधित्व करने के साथ-साथ अगले चरित्र की उपेक्षा भी करता है।
विंडोज समाधान
git ls-files -v | grep '^^H' सभी अनकैप्ड फ़ाइलों को सूचीबद्ध करने के लिएgit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree उन फ़ाइलों को हटाने के लिए जो सभी फ़ाइलों के माध्यम से की गई थीं update-index --skip-worktreegit ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged उन फ़ाइलों को हटाने के लिए जो सभी फ़ाइलों के माध्यम से की गई थीं update-index --assume-unchangedgit ls-files -v | grep '^^H' फिर से सभी अनकैप्ड फ़ाइलों को सूचीबद्ध करें और जांचें कि क्या उपरोक्त कमांड ने काम किया है - इसे अब कुछ भी वापस नहीं करना चाहिए