git - उन फ़ाइलों को अनदेखा करें जो पहले से ही गिट भंडार के लिए प्रतिबद्ध हैं




caching version-control gitignore git-rm (18)

मेरे जैसे धीमे लोगों के लिए शायद एक और सुझाव है =) .gitignore फ़ाइल को अपनी रिपोजिटरी रूट में रखें .git फ़ोल्डर में नहीं । चीयर्स!

मेरे पास पहले से ही प्रारंभिक गिट भंडार है जिसे मैंने एक .gitignore फ़ाइल में .gitignore है। मैं फ़ाइल इंडेक्स को रीफ्रेश कैसे कर सकता हूं ताकि फ़ाइलों को अनदेखा किया जा सके?


मेरे सर्वर लिनक्स सर्वर पर (मेरे स्थानीय देव मैक पर सच नहीं है), जब तक मैं तारांकन नहीं जोड़ता तब तक निर्देशिकाओं को अनदेखा किया जाता है:

www / अभिलेखागार / *

मुझे नहीं पता क्यों, लेकिन यह मुझे कुछ घंटों तक ढीला कर दिया, इसलिए मैं साझा करना चाहता था ...


यदि फ़ाइलें पहले से ही संस्करण नियंत्रण में हैं तो आपको उन्हें मैन्युअल रूप से हटाने की आवश्यकता है।


जैसा कि dav_i कहते हैं, फ़ाइल को रेपो में रखने के लिए और फिर भी अतिरिक्त प्रतिबद्धता के बिना इसे परिवर्तन से हटाकर आप इसका उपयोग कर सकते हैं:

git rm -r --cached .

कॉम्प्लेक्स हर जगह जवाब!

बस निम्नलिखित का प्रयोग करें

git update-index --assume-unchanged filename

यह उन फ़ाइलों को हटा देगा जिन्हें आप मूल से अनदेखा करने की कोशिश कर रहे हैं, न कि आपके कंप्यूटर पर मास्टर से!

उसके बाद बस प्रतिबद्ध और धक्का!


.Gitignore में पीछे की सफेद जगह हटा दें

साथ ही, सुनिश्चित करें कि आपके पास आपके .gitignore में कोई पिछला सफेद स्थान नहीं है। मुझे इस सवाल का जवाब मिला क्योंकि मैं एक जवाब खोज रहा था, फिर मुझे एक अजीब लग रहा था कि मुझे सिर्फ बिल्ली के बजाय संपादक खोलना चाहिए .gitignore। अंत से एक अतिरिक्त जगह हटा दी गई है और यह अब काम करता है :)


यदि आप किसी फ़ाइल में परिवर्तनों को अनदेखा करने का प्रयास कर रहे हैं जो पहले से ही भंडार में ट्रैक किया गया है (उदाहरण के लिए एक dev.properties फ़ाइल जिसे आपको अपने स्थानीय वातावरण में बदलने की आवश्यकता होगी लेकिन आप इन परिवर्तनों में कभी भी जांच नहीं करना चाहेंगे) जो आप करना चाहते हैं है:

git update-index --assume-unchanged <file>

यदि आप फिर से परिवर्तनों को ट्रैक करना शुरू करना चाहते हैं

git update-index --no-assume-unchanged <file>

गिट-अपडेट-इंडेक्स (1) मैनुअल पेज देखें

अगर आपको गिट-रीसेट (के via ) जारी रखने के लिए इसकी आवश्यकता होती है तो अपडेट-इंडेक्स के लिए skip-worktree और no-skip-worktree विकल्प भी देखें।

अपडेट करें: चूंकि लोग पूछ रहे हैं, यहां एक सुविधाजनक (और नीचे टिप्पणी के बाद से अपडेट किया गया है) यह देखने के लिए कि कौन सी फाइलें वर्तमान में "अनदेखा" (--समूह-अपरिवर्तित) आपके स्थानीय कार्यक्षेत्र में हैं

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

आपके उत्तर के लिए धन्यवाद, मैं इसे सुधारने के लिए इस छोटे से लाइनर को लिखने में सक्षम था। मैंने इसे अपने .gitignore और repo पर चलाया, और इसमें कोई समस्या नहीं थी, लेकिन अगर कोई चमकदार समस्याएं देखता है, तो कृपया टिप्पणी करें। यह git rm -r --cached से git rm -r --cached किया जाना चाहिए:

बिल्ली $ (गिट rev-parse --show-toplevel) / gitIgnore | sed "// // // // | grep -v "^ #" | xargs -L 1 -I {} $ (गिट rev-parse --show-toplevel) -name "{}" ढूंढें। xargs -L 1 गीट आरएम-आर - कैश किया गया

ध्यान दें कि आपको बहुत fatal: pathspec '<pathspec>' did not match any files मिलेगा fatal: pathspec '<pathspec>' did not match any files । यह केवल उन फ़ाइलों के लिए है जिन्हें संशोधित नहीं किया गया है।


किसी फ़ाइल को अनचाहे करने के लिए जो पहले से ही आपके भंडार में जोड़ा / प्रारंभ किया गया है, यानी फ़ाइल को ट्रैक करना बंद करें, लेकिन इसे अपने सिस्टम उपयोग से हटाएं: git rm --cached filename


मेरे उत्तरों में से कोई भी काम नहीं किया।

बजाय:

  1. फ़ाइल को गिट-नियंत्रित निर्देशिका से बाहर ले जाएं
  2. गिट में हटाने की जांच करें
  3. फ़ाइल को वापस गिट-नियंत्रित निर्देशिका में ले जाएं

फ़ाइल को वापस ले जाने के बाद, गिट इसे अनदेखा कर देगा।

निर्देशिकाओं के साथ भी काम करता है!


ट्रैक होने से कुछ विशिष्ट फ़ाइलों को निकालने के लिए:

git update-index --assume-unchanged path/to/file

यदि कभी भी आप इसे फिर से ट्रैक करना शुरू करना चाहते हैं:

git update-index --no-assume-unchanged path/to/file                      

'उत्तर' कमांड के बारे में बहुत कुछ नहीं पता था, मैंने इसे भाग लिया, मेरी निराशा के लिए बहुत कुछ। यह आपके गिट रेपो से प्रत्येक फ़ाइल को दोबारा हटा देता है।

बचाव के लिए ... कैसे एक "गिट आरएम-आर" वापस करने के लिए?

git reset HEAD

क्या चाल है, क्योंकि मेरे पास स्थानीय फाइलें असामान्य थीं जिन्हें मैं ओवरराइट नहीं करना चाहता था।


मेरी एक और समस्या थी जिसे मैंने एक इनलाइन टिप्पणी दी थी।

tmp/*   # ignore my tmp folder (this doesn't work)

यह काम

# ignore my tmp folder
tmp/

यहां एक अन्य समस्या का उल्लेख नहीं किया गया है, यदि आपने विंडोज नोटपैड में अपना .gitignore बनाया है, तो मुझे पता चला है कि यह अन्य प्लेटफॉर्म पर गड़बड़ जैसा दिख सकता है। कुंजी यह सुनिश्चित करने के लिए है कि आपको एन्कोडिंग नोटपैड में एएनएसआई पर सेट किया गया है, (या लिनक्स पर फ़ाइल को मेरे द्वारा किया गया है)।

मेरे उत्तर से यहां: https://.com/a/11451916/406592


मुझे .gitignore के साथ एक अजीब समस्या मिली है। सब कुछ जगह में था और सही लग रहा था। मेरा .gitignore "अनदेखा" क्यों किया गया एकमात्र कारण यह था कि लाइन-एंड मैक-प्रारूप (\ r) में था। तो फ़ाइल को सही लाइन-एंडिंग के साथ सहेजने के बाद (vi में: set ff = unix सेट करें) सबकुछ एक आकर्षण की तरह काम करता है!


अगर आप फ़ाइल को अपने स्थानीय सिस्टम से फ़ाइल को हटाए बिना ट्रैकिंग फ़ाइल को रोकना चाहते हैं, जिसे मैं config/database.yml फ़ाइल को अनदेखा करने के लिए पसंद करता हूं। बस कोशिश करें:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

अब, इस फ़ाइल को .gitignore फ़ाइल में जोड़ें और परिवर्तन करें। और अब से, config / database.yml में किए गए किसी भी बदलाव को गिट द्वारा ट्रैक नहीं किया जाएगा।

$ echo config/database.yml >> .gitignore

धन्यवाद


मैंने इन चरणों का पालन किया

git rm -r --cached .
git add .
git reset HEAD

उसके बाद, गिट सभी फ़ाइलों को हटाएं (* .swp मेरे मामले में) जो अनदेखा किया जाना चाहिए।


ठीक है , जवाब आसान है ... आप मूल रूप से शाखा देखते हैं, लेकिन आपके पास अभी तक एक स्थानीय प्रति नहीं है! ...

आपको शाखा fetch की जरूरत है ...

आप बस शाखा में चेकआउट कर सकते हैं और फिर चेकआउट कर सकते हैं, ऐसा करने के लिए नीचे एक पंक्ति कमांड का उपयोग करें:

git fetch && git checkout test

मैंने मतभेदों को साझा करने के लिए नीचे दी गई छवि भी बनाई है, देखें कि कैसे कार्य करता है और यह pull लिए अलग pull :







git caching version-control gitignore git-rm