git मैं गिट को फ़ाइल मोड(chmod) में अनदेखा कैसे कर सकता हूं?




ignore (8)

यदि आपने पहले से chmod कमांड का उपयोग किया है तो फ़ाइल के अंतर की जांच करें, यह पिछले फ़ाइल मोड और वर्तमान फ़ाइल मोड दिखाता है जैसे कि:

नया मोड: 755

पुराना मोड: 644

नीचे कमांड का उपयोग कर सभी फाइलों का पुराना मोड सेट करें

sudo chmod 644 .

अब core.fileMode को कमांड या मैन्युअल रूप से कॉन्फ़िगरेशन फ़ाइल में गलत करने के लिए सेट करें।

git config core.fileMode false

फिर सभी फ़ाइलों की अनुमतियों को बदलने के लिए chmod कमांड लागू करें

sudo chmod 755 .

और फिर core.fileMode को सत्य पर सेट करें।

git config core.fileMode true

सर्वोत्तम प्रथाओं के लिए core.fileMode हमेशा झूठ नहीं रखें।

मेरे पास एक प्रोजेक्ट है जिसमें मुझे विकास के दौरान chmod साथ फ़ाइलों का मोड बदलना है, लेकिन मुख्य रेपो में जो नहीं बदला जाना चाहिए।

गिट chmod -R 777 . पर उठाता है chmod -R 777 . और सभी फ़ाइलों को बदले में चिह्नित करता है। क्या गिट को मोड में बदलावों को अनदेखा करने का कोई तरीका है जो फाइलों में किए गए हैं?


प्रयत्न:

git config core.fileMode false

git-config(1) :

core.fileMode
       If false, the executable bit differences between the index and the
       working copy are ignored; useful on broken filesystems like FAT.
       See git-update-index(1). True by default.

इस विकल्प को एक-ऑफ कमांड के लिए सेट करने के लिए -c ध्वज का उपयोग किया जा सकता है:

git -c core.fileMode=false diff

और --global ध्वज लॉग इन उपयोगकर्ता के लिए यह डिफ़ॉल्ट व्यवहार होगा।

git config --global core.fileMode false

चेतावनी

core.fileMode सबसे अच्छा अभ्यास नहीं है और सावधानीपूर्वक इस्तेमाल किया जाना चाहिए। यह सेटिंग केवल निष्पादन योग्य बिट मोड को कवर करती है और कभी भी पढ़ / लिखने वाली बिट्स नहीं देती है। कई मामलों में आपको लगता है कि आपको इस सेटिंग की आवश्यकता है क्योंकि आपने chmod -R 777 तरह कुछ किया है, जिससे आपकी सभी फाइलें निष्पादन योग्य हैं। लेकिन ज्यादातर परियोजनाओं में अधिकांश फाइलों की आवश्यकता नहीं होती है और सुरक्षा कारणों से निष्पादन योग्य नहीं होना चाहिए

इस तरह की स्थिति को हल करने का सही तरीका फ़ोल्डर और फ़ाइल अनुमति को अलग से संभालना है, जैसे कुछ:

find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \;  # Make files read/write

यदि आप ऐसा करते हैं, तो आपको दुर्लभ वातावरण को छोड़कर core.fileMode का उपयोग करने की आवश्यकता नहीं होगी।


सरल समाधान:

प्रोजेक्ट फ़ोल्डर में यह सरल प्रशंसा करें ( यह आपके मूल परिवर्तनों को हटा नहीं गया है) ... यह केवल उस फ़ोल्डर को हटा देगा जो आपने किया था जब आपने परियोजना फ़ोल्डर अनुमति को बदल दिया था

सराहना नीचे है:

गिट विन्यास core.fileMode झूठी

यह सभी अनावश्यक फ़ाइल क्यों संशोधित हो जाती है: क्योंकि आपने प्रोजेक्ट फ़ोल्डर अनुमतियों को सुडो chmod -R 777 की सराहना की है ./yourProjectFolder

आप परिवर्तनों की जांच कब करेंगे, आपने क्या नहीं किया? गिट diff फ़ाइल नाम का उपयोग करते हुए आप नीचे की तरह पाए गए


अगर

git config --global core.filemode false

आपके लिए काम नहीं करता है, इसे मैन्युअल रूप से करें:

cd into yourLovelyProject folder

सीडी में .git फ़ोल्डर में:

cd .git

कॉन्फ़िगरेशन फ़ाइल संपादित करें:

nano config

गलत करने के लिए सच बदलें

[core]
        repositoryformatversion = 0
        filemode = true

->

[core]
        repositoryformatversion = 0
        filemode = false

बचाओ, बाहर निकलें, ऊपरी फ़ोल्डर में जाएं:

cd ..

गिट फिर से करें

git init

आप कर चुके हैं!


आप इसे विश्व स्तर पर कॉन्फ़िगर कर सकते हैं:

git config --global core.filemode false

यदि उपर्युक्त आपके लिए काम नहीं करता है, तो कारण हो सकता है कि आपका स्थानीय कॉन्फ़िगरेशन वैश्विक कॉन्फ़िगरेशन को ओवरराइड कर दे।

वैश्विक कॉन्फ़िगरेशन प्रभावी करने के लिए अपनी स्थानीय कॉन्फ़िगरेशन निकालें:

git config --unset core.filemode

वैकल्पिक रूप से, आप अपनी स्थानीय कॉन्फ़िगरेशन को सही मान में बदल सकते हैं:

git config core.filemode false


ग्रेग core.fileMode उत्तर में जोड़ना ( core.fileMode कॉन्फ़िगर चर का उपयोग करने के लिए):

आप इंडेक्स में निष्पादन अनुमतियों को बदलने के लिए गिट अपडेट-इंडेक्स ("गिट एड" का निम्न-स्तर संस्करण --chmod=(-|+)x का --chmod=(-|+)x विकल्प का उपयोग कर सकते हैं, जहां से आप इसे "गिट" प्रतिबद्ध "(और नहीं" गिट प्रतिबद्ध-ए ")।


निम्नलिखित उपनाम (~ / .gitconfig में) को परिभाषित करके आप फ़ाइल मोड प्रति गिट कमांड को अस्थायी रूप से अक्षम कर सकते हैं:

nfm = "!f(){ git -c core.fileMode=false [email protected]; };f"

जब यह उपनाम गिट कमांड से उपसर्ग किया जाता है, तो फ़ाइल मोड में परिवर्तन कमांड के साथ दिखाई नहीं देंगे जो अन्यथा उन्हें दिखाएंगे। उदाहरण के लिए:

git nfm status

काम करने वाले पेड़ में पूर्ववत मोड परिवर्तन:

git diff --summary | grep --color 'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -d'\n' chmod +x
git diff --summary | grep --color 'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -d'\n' chmod -x

या मिंगव-गिट में

git diff --summary | grep  'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -e'\n' chmod +x
git diff --summary | grep  'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -e'\n' chmod -x






chmod