जवाबों:
से डॉक्स :
प्रत्येक पंक्ति
.gitattributes
(या.git/info/attributes
) फ़ाइल फॉर्म की है:pattern attr1 attr2 ...
तो यहाँ, पैटर्न है *
, जिसका अर्थ है सभी फाइलें, और विशेषता है text=auto
।
क्या करता text=auto
है? प्रलेखन से:
जब पाठ को "ऑटो" पर सेट किया जाता है, तो पथ को स्वचालित एंड-ऑफ-लाइन सामान्यीकरण के लिए चिह्नित किया जाता है। यदि गिट निर्णय लेता है कि सामग्री पाठ है, तो इसकी लाइन अंत चेकइन पर LF के लिए सामान्यीकृत है।
यदि यह सक्षम नहीं है तो डिफ़ॉल्ट व्यवहार क्या है?
अनिर्दिष्ट
यदि पाठ विशेषता अनिर्दिष्ट है, तो फ़ाइल को परिवर्तित किया जाना चाहिए यह निर्धारित करने के लिए Git core.autocrlf कॉन्फ़िगरेशन चर का उपयोग करता है।
क्या करता core.autocrlf
है? डॉक्स से:
core.autocrlf
इस चर को "सत्य" पर सेट करना लगभग सभी फ़ाइलों पर "ऑटो" को पाठ विशेषता सेट करने के समान है, सिवाय इसके कि पाठ फ़ाइलों को सामान्य करने की गारंटी नहीं है: रिपॉजिटरी में CRLF युक्त फ़ाइलों को छुआ नहीं जाएगा। यदि आप अपनी कार्यशील निर्देशिका में CRLF लाइन एंडिंग करना चाहते हैं, तो भी इस सेटिंग का उपयोग करें, भले ही रिपॉजिटरी में सामान्यीकृत लाइन एंडिंग्स न हों। इस चर को इनपुट पर सेट किया जा सकता है, जिस स्थिति में कोई आउटपुट रूपांतरण नहीं किया जाता है।
यदि आपको लगता है कि यह सब कीचड़ के रूप में स्पष्ट है, तो आप अकेले नहीं हैं।
यहाँ * text=auto
मेरे शब्दों में क्या है: जब कोई फ़ाइल करता है, तो Git यह अनुमान लगाता है कि वह फ़ाइल एक टेक्स्ट फ़ाइल है या नहीं, और यदि यह है, तो यह फ़ाइल का एक संस्करण बना देगा जहाँ सभी CR + LF बाइट्स को LF बाइट्स से बदल दिया जाता है। यह सीधे प्रभावित नहीं करता है कि काम करने वाले पेड़ में कौन सी फाइलें दिखती हैं, ऐसी अन्य सेटिंग्स हैं जो एक फ़ाइल की जांच करते समय LF बाइट्स को CR + LF बाइट में बदल देती हैं।
मैं फ़ाइल में डालने की सलाह नहीं दूंगा । इसके बजाय, मैं कुछ इस तरह की सिफारिश करेंगे:* text=auto
.gitattributes
*.txt text
*.html text
*.css text
*.js text
यह स्पष्ट रूप से निर्दिष्ट करता है कि कौन सी फाइलें पाठ फाइलें हैं, जो वस्तु डेटाबेस में CRLF को LF में परिवर्तित कर देती हैं (लेकिन आवश्यक रूप से कार्यशील पेड़ में नहीं)। हमारे पास एक रेपो था * text=auto
, और Git ने एक छवि फ़ाइल के लिए गलत अनुमान लगाया कि यह एक पाठ फ़ाइल थी, जिससे इसे भ्रष्ट करने के लिए इसे ऑब्जेक्ट डेटाबेस में LF बाइट्स के साथ CR + LF बाइट्स से बदल दिया गया। यह डिबग करने के लिए एक मजेदार नहीं था।
यदि आप उपयोग करना चाहते हैं * text=auto
, तो इसे पहली पंक्ति के रूप में डालें .gitattributes
, ताकि बाद की पंक्तियाँ इसे ओवरराइड कर सकें। यह एक तेजी से लोकप्रिय अभ्यास बनता जा रहा है।
everyone
संदर्भ है git-scm
, तो यह संभवतः इसलिए है क्योंकि वे एक * nix पैकेज विकसित कर रहे हैं और इस प्रकार * nix newline वर्ण का उपयोग करना सामान्य है ।
git-scm
* निक्स। MacOS LF का उपयोग करता है। केवल विंडोज (केवल मुख्य धारा ओएस पर विचार) CRLF का उपयोग कर रहा है। यह विंडोज़ पर * निक्स टूल्स का उपयोग करने वाले और फ़ाइलों के आदान-प्रदान के समय सभी के लिए कठिन हो जाता है। यह भी देखें कि सीआरएलएफ क्यों ।
*.txt text=auto
और *.txt text
कृपया के बीच का अंतर समझा सकते हैं ? मुझे लगा कि आपके उदाहरण के ऊपर की सभी 4 पंक्तियाँ फ़ाइल एक्सटेंशन के text=auto
ठीक text
बाद की होनी चाहिए । उदाहरण के लिए KiCad पदचिह्न फ़ाइलें (".kicad_mod" एक्सटेंशन), उनके gitattributes फ़ाइल में इस लाइन का उपयोग करके सामान्यीकृत की जाती हैं: *.kicad_mod text=auto
( kicad-pcb.org/lbooks/klc/G1.7 )।
यह सुनिश्चित करता है कि लाइन एंडिंग सामान्यीकृत हो। स्रोत: कर्नेल
जब पाठ को "ऑटो" पर सेट किया जाता है, तो पथ को स्वचालित एंड-ऑफ-लाइन सामान्यीकरण के लिए चिह्नित किया जाता है। यदि गिट निर्णय लेता है कि सामग्री पाठ है, तो इसकी लाइन अंत चेकइन पर LF के लिए सामान्यीकृत है।
यदि आप एक स्रोत कोड प्रबंधन प्रणाली के साथ हस्तक्षेप करना चाहते हैं जो एंड-ऑफ-लाइन सामान्यीकरण को लागू करता है, या आप बस चाहते हैं कि आपकी रिपॉजिटरी में सभी टेक्स्ट फाइलें सामान्य हो जाएं, तो आपको सभी फाइलों के लिए टेक्स्ट विशेषता को "ऑटो" पर सेट करना चाहिए।
यह सुनिश्चित करता है कि सभी फाइलें जो गिट को टेक्स्ट मानती हैं, रिपॉजिटरी में सामान्यीकृत (LF) लाइन एंडिंग्स होंगी।
When a text file is normalized, its line endings are converted to LF in the repository.
LF
, खिड़कियों पर भी रहती है?
यह कॉन्फ़िगरेशन इस बात से संबंधित है कि लाइन एंडिंग को कैसे हैंडल किया जाता है। जब सक्षम किया जाता है, तो सभी पंक्ति अंत को रिपॉजिटरी में LF में बदल दिया जाता है। आपके कार्य निर्देशिका में लाइन अंत कैसे परिवर्तित किए जाते हैं, इससे निपटने के लिए अन्य झंडे हैं। इस मुद्दे पर पूरी जानकारी हमें यहाँ दें: https://www.kernel.org/pub/software/scm/git/docs/Itetributing.html