जवाबों:
आधिकारिक दस्तावेज के अनुसार , आप update-indexउप-कमांड का उपयोग करके किसी भी ट्रैक की गई फ़ाइल पर "निष्पादन योग्य" ध्वज को सेट या निकाल सकते हैं ।
ध्वज सेट करने के लिए, निम्नलिखित आदेश का उपयोग करें:
git update-index --chmod=+x path/to/file
इसे हटाने के लिए, उपयोग करें:
git update-index --chmod=-x path/to/file
हुड के नीचे
हालांकि यह नियमित यूनिक्स फ़ाइलों की अनुमति प्रणाली की तरह दिखता है, वास्तव में यह नहीं है। Git अपने आंतरिक संग्रहण में प्रत्येक फ़ाइल के लिए एक विशेष "मोड" रखता है:
100644 नियमित फ़ाइलों के लिए100755 निष्पादन योग्य लोगों के लिएआप विकल्प के ls-fileसाथ, सबकांड का उपयोग करके इसकी कल्पना कर सकते हैं --stage:
$ git ls-files --stage
100644 aee89ef43dc3b0ec6a7c6228f742377692b50484 0 .gitignore
100755 0ac339497485f7cc80d988561807906b2fd56172 0 my_executable_script.sh
डिफ़ॉल्ट रूप से, जब आप किसी फ़ाइल को एक रिपॉजिटरी में जोड़ते हैं, तो गिट अपने फाइलसिस्टम विशेषताओं को सम्मानित करने और उसके अनुसार सही फ़ाइलोड सेट करने का प्रयास करेगा। आप core.fileModeविकल्प को गलत पर सेट करके इसे अक्षम कर सकते हैं :
git config core.fileMode false
समस्या निवारण
यदि कुछ बिंदु पर गिट फाइलमोड सेट नहीं है, लेकिन फ़ाइल में सही फाइलसिस्टम ध्वज है, तो मोड को हटाने का प्रयास करें और इसे फिर से सेट करें:
git update-index --chmod=-x path/to/file
git update-index --chmod=+x path/to/file
बक्शीश
Git 2.9 के साथ शुरू, आप एक फाइल को स्टेज कर सकते हैं और एक कमांड में फ्लैग सेट कर सकते हैं:
git add --chmod=+x path/to/file
एंटवेन का जवाब सही है, और यह एक टिप्पणी होनी चाहिए लेकिन टिप्पणियों में पर्याप्त स्थान नहीं है और प्रारूपण की अनुमति नहीं है। :-) मैं बस को जोड़ने के लिए है कि Git में, फाइल अनुमति दर्ज हैं चाहते हैं केवल 1 के रूप में या तो 644या 755(वर्तनी ( 100644और 100755, 100भाग का अर्थ है "नियमित रूप से फ़ाइल"):
diff --git a/path b/path
new file mode 100644
पूर्व - 644- का अर्थ है कि फ़ाइल निष्पादन योग्य नहीं होनी चाहिए , और बाद का अर्थ है कि यह निष्पादन योग्य होना चाहिए। आपकी फ़ाइल प्रणाली में वास्तविक फ़ाइल मोड में कैसे बदल जाता है, यह कुछ हद तक OS-निर्भर है। यूनिक्स जैसी प्रणालियों पर, बिट्स को आपकी umaskसेटिंग के माध्यम से पारित किया जाता है , जो आम तौर 022पर "समूह" और "अन्य" 002से लिखने की अनुमति को हटाने के लिए होगा , या केवल "अन्य" से लिखित अनुमति को हटाने के लिए होगा। यह तब भी हो सकता है 077जब आप विशेष रूप से गोपनीयता के बारे में चिंतित हों और "समूह" और "अन्य" दोनों से पढ़ने, लिखने और अनुमति को हटाने की इच्छा रखते हों।
1 Git के शुरुआती-शुरुआती संस्करणों ने समूह अनुमतियों को सहेजा, ताकि कुछ रिपॉजिटरी में ट्री एंट्रीज़ हों 664। आधुनिक गिट नहीं करता है, लेकिन चूंकि किसी भी वस्तु का कोई भी हिस्सा कभी भी नहीं बदला जा सकता है, उन पुराने अनुमतियों के बिट अभी भी पुराने पेड़ की वस्तुओं में बने रहते हैं।
केवल ०६४४ या ०5५५ स्टोर करने का परिवर्तन प्रतिबद्ध ४ ९ 70४४ee०६ ईबी ५ store५२ में हुआ था , जो कि Git v0.99 से पहले है और दिनांक १६ अप्रैल २००५।
e44794706eeb57f2ee38ed1604821aa38b8ad9d2, यानी, Git संस्करण 0.99 से पहले।