windows - विंडोज पर गिट: सीआरएलएफ सेटिंग्स का क्या अर्थ है?




linux git (2)

एफवाईआई।, डिफ़ॉल्ट रूप से, विंडोज़ में समाप्त होने वाली लाइन सीआरएलएफ ले जाएगी और लिनक्स एलएफ ले जाएगा। स्पष्ट समझ के लिए कृपया नीचे दी गई तालिका पाएं।

╔═══════════════╦══════════════╦══════════════╦══════════════╗
║ core.autocrlf ║    false     ║    input     ║    true      ║
║               ║ Win => Unix  ║ Win => Unix  ║ Win => Unix  ║
╠═══════════════╬══════════════╬══════════════╬══════════════╣
║   git commit  ║ LF => LF     ║ LF => LF     ║ LF => LF     ║
║               ║ CR => CR     ║ CR => CR     ║ CR => CR     ║
║               ║ CRLF => CRLF ║ *CRLF => LF  ║ *CRLF => LF  ║
╠═══════════════╬══════════════╬══════════════╬══════════════╣
║  git checkout ║ LF => LF     ║ LF => LF     ║ *LF => CRLF  ║
║               ║ CR => CR     ║ CR => CR     ║ CR => CR     ║
║               ║ CRLF => CRLF ║ CRLF => CRLF ║ CRLF => CRLF ║
╚═══════════════╩══════════════╩══════════════╩══════════════╝

उपरोक्त सारणीय जानकारी में, प्रतीक * विंडोज और यूनिक्स के बीच अंतर को हाइलाइट करता है। एक नज़र में, ओएस प्लेटफॉर्म पर आधारित सीएलआरएफ जानकारी नीचे दी गई है:

विंडोज उपयोगकर्ताओं के लिए

  • यदि विंडोज उपयोगकर्ता क्रॉस-प्लेटफार्म परियोजनाओं के साथ काम कर रहे हैं, तो यह core.autocrlf=true मशीनों के लिए core.autocrlf=true होना चाहिए और core.autocrlf=input यूनिक्स मशीनों के लिए core.autocrlf=input होना चाहिए
  • यदि विंडोज उपयोगकर्ता केवल विंडोज प्रोजेक्ट्स के साथ काम करते हैं, तो यह core.autocrlf=true या core.autocrlf=false दोनों हो सकता है। लेकिन core.autocrlf=input इस मामले में मुद्दों का परिणाम होगा।

यूनिक्स उपयोगकर्ताओं के लिए (लिनक्स / मैक ओएस)

  • यदि यूनिक्स उपयोगकर्ता क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट्स के साथ काम कर रहे हैं, तो यह core.autocrlf=true मशीनों और core.autocrlf=input यूनिक्स मशीनों के लिए core.autocrlf=input लिए core.autocrlf=true होना चाहिए
  • यदि यूनिक्स उपयोगकर्ता केवल यूनिक्स परियोजनाओं के साथ काम करते हैं, तो यह core.autocrlf=input या core.autocrlf=false दोनों हो सकता है। लेकिन core.autocrlf=true इस मामले में मुद्दों का परिणाम होगा।

एक ही ओएस उपयोगकर्ताओं के लिए

  • एक शुद्ध विंडोज प्रोजेक्ट या शुद्ध यूनिक्स प्रोजेक्ट के लिए, यह core.autocrlf=false हो सकता है।

मैं गिट में सीआरएलएफ सेटिंग्स से संबंधित जटिलताओं को नहीं समझता: core.autocrlf , core.safecrlf

मैं एक टीम में एक क्रॉस-प्लेटफार्म प्रोजेक्ट विकसित कर रहा हूं और विंडोज़ और लिनक्स डेवलपर्स दोनों को गिट मार्किंग फाइलों के बिना एक साथ काम करने में सक्षम होना चाहूंगा क्योंकि लाइन लाइनिंग स्टाइल की वजह से संशोधित किया गया है।

विभिन्न सेटिंग्स का क्या अर्थ है? किसी भी विकल्प को चुनने के परिणाम क्या होंगे? और मेरे मामले के लिए सबसे अच्छा समाधान क्या होगा?

हां, मुझे इस सवाल से अवगत है और जवाब अंतर्दृष्टि नहीं थे, इस प्रकार सहायक नहीं थे।


मैंने प्रतिबद्धता और चेकआउट मामलों के लिए 3 संभावित मूल्यों की खोज की और यह परिणामस्वरूप तालिका है:

╔═══════════════╦══════════════╦══════════════╦══════════════╗
║ core.autocrlf ║     false    ║     input    ║     true     ║
╠═══════════════╬══════════════╬══════════════╬══════════════╣
║   git commit  ║ LF => LF     ║ LF => LF     ║ LF => CRLF   ║
║               ║ CR => CR     ║ CR => CR     ║ CR => CR     ║
║               ║ CRLF => CRLF ║ CRLF => LF   ║ CRLF => CRLF ║
╠═══════════════╬══════════════╬══════════════╬══════════════╣
║  git checkout ║ LF => LF     ║ LF => LF     ║ LF => CRLF   ║
║               ║ CR => CR     ║ CR => CR     ║ CR => CR     ║
║               ║ CRLF => CRLF ║ CRLF => CRLF ║ CRLF => CRLF ║
╚═══════════════╩══════════════╩══════════════╩══════════════╝

मैं सभी प्लेटफार्मों में core.autocrlf = input का उपयोग करने की सलाह core.autocrlf = input । इस मामले में यदि गिट को CRLF सामना करना पड़ता है तो यह निश्चित रूप से इसे LF में परिवर्तित कर देगा, और मौजूदा फाइलें LF साथ रहती हैं।





core.autocrlf