ये संदेश 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.autocrlf
git स्थापना के दौरान चुना जाता है और सिस्टम-वाइड 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
।