ये संदेश core.autocrlfविंडोज़ पर गलत डिफ़ॉल्ट मान के कारण हैं ।
यह autocrlfहै कि लाइन एंडिंग रूपांतरणों को पारदर्शी तरीके से संभालना है। और यह करता है!
बुरी खबर : मूल्य को मैन्युअल रूप से कॉन्फ़िगर करने की आवश्यकता है।
अच्छी खबर : इसे केवल एक बार प्रति इंस्टॉलेशन के अनुसार किया जाना चाहिए (प्रति प्रोजेक्ट सेटिंग भी संभव है)।
कैसे autocrlfकाम करता है :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
यहां crlf= जीत-शैली अंत-रेखा मार्कर, lf= यूनिक्स-शैली (और मैक ओएसएक्स)।
( crऊपर दिए गए तीन विकल्पों में से किसी के लिए भी प्रभावित नहीं है)
यह चेतावनी कब दिखाई जाती है (विंडोज के तहत)
- autocrlf= trueयदि आपकी किसी lfफाइल (= RARELY) में यूनिक्स-शैली है,
- autocrlf= inputयदि आपकी किसी crlfफाइल में (= लगभग हमेशा) जीत शैली है,
- autocrlf= false- - कभी नहीं!
इस चेतावनी का क्या मतलब है
चेतावनी " LF को CRLF द्वारा प्रतिस्थापित किया जाएगा " कहता है कि आप (होने autocrlf= true) ने कमिट-चेकआउट चक्र के बाद अपना यूनिक्स-शैली LF खो दिया होगा (यह विंडोज़-शैली CRLF द्वारा प्रतिस्थापित किया जाएगा)। Git आपको विंडोज़ के तहत यूनिक्स-शैली LF का उपयोग करने की उम्मीद नहीं करता है।
चेतावनी " CRLF को LF द्वारा प्रतिस्थापित किया जाएगा " का कहना है कि आप (होने autocrlf= input) एक कम-चेकआउट चक्र के बाद अपनी विंडोज़-शैली CRLF खो देंगे (यह यूनिक्स-शैली LF द्वारा प्रतिस्थापित किया जाएगा)। inputखिड़कियों के नीचे उपयोग न करें ।
फिर भी एक और तरीका है यह दिखाने के लिए कि कैसे autocrlfकाम करता है
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
जहाँ x या तो CRLF (विंडोज़-शैली) या LF (यूनिक्स-शैली) और तीर के लिए खड़ा है
file to commit -> repository -> checked out file
कैसे ठीक करना है
डिफ़ॉल्ट मान core.autocrlfgit स्थापना के दौरान चुना जाता है और सिस्टम-वाइड gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig) में संग्रहीत किया जाता है । इसके अलावा वहाँ हैं (निम्नलिखित क्रम में कैस्केडिंग):
- "वैश्विक" (प्रति-उपयोगकर्ता) gitconfig पर स्थित है ~/.gitconfig, फिर भी एक और
- "वैश्विक" (प्रति-उपयोगकर्ता) gitconfig पर $XDG_CONFIG_HOME/git/configया
- $HOME/.config/git/configऔर
"स्थानीय" (प्रति-रेपो) gitconfig में .git/configकाम कर रहा है।
इसलिए, git config core.autocrlfवर्तमान में उपयोग किए गए मूल्य की जांच करने के लिए काम करने वाले डायर में लिखें और
- autocrlf=falseसिस्टम-वाइड gitconfig # प्रति-सिस्टम समाधान
- git config --global core.autocrlf false # प्रति-उपयोगकर्ता समाधान
- git config --local core.autocrlf false # प्रति-प्रोजेक्ट समाधान जोड़ें
चेतावनियाँ
- git configसेटिंग्स द्वारा gitattributesसेटिंग्स को ओवरराइड किया जा सकता है ।
- crlf -> lfरूपांतरण केवल तब होता है जब नई फाइलें जोड़ते हैं, crlfरेपो में पहले से मौजूद फाइलें प्रभावित नहीं होती हैं।
Moral (Windows के लिए):
- उपयोग करें core.autocrlf= trueयदि आप यूनिक्स के तहत इस परियोजना का उपयोग करने की योजना बना रहे हैं (और यूनिक्स लाइन एंडिंग का उपयोग करने के लिए अपने संपादक / IDE को कॉन्फ़िगर करने के लिए तैयार नहीं हैं),
- उपयोग करें core.autocrlf= falseयदि आप केवल Windows के तहत इस परियोजना का उपयोग करने की योजना बनाते हैं ( या आपने यूनिक्स लाइन एंडिंग का उपयोग करने के लिए अपने संपादक / आईडीई को कॉन्फ़िगर किया है),
- कभी भी उपयोग न करें core.autocrlf= inputजब तक कि आपके पास एक अच्छा कारण न हो ( जैसे कि यदि आप विंडोज़ के तहत यूनिक्स उपयोगिताओं का उपयोग कर रहे हैं या यदि आप मेकफाइल्स मुद्दों में भाग लेते हैं),
पुनश्च विंडोज के लिए गिट स्थापित करते समय क्या चुनना है?
यदि आप यूनिक्स के तहत अपनी किसी भी परियोजना का उपयोग नहीं करने जा रहे हैं, तो डिफ़ॉल्ट पहले विकल्प से सहमत न हों । तीसरा एक चुनें ( जैसा कि चेकआउट है, वैसे ही कमिट करें )। आपको यह संदेश दिखाई नहीं देगा। कभी।
पीपीएस मेरी निजी प्राथमिकता संपादक / आईडीई को यूनिक्स-शैली की समाप्ति और सेटिंग core.autocrlfका उपयोग करने के लिए कॉन्फ़िगर कर रही हैfalse ।