यह उत्तर प्रासंगिक लगता है क्योंकि ओपी बहु-ओएस समाधान की आवश्यकता का संदर्भ देता है। यह Github, लाइन एंडिंग OS को संभालने के लिए उपलब्ध लेख विवरणों की मदद करता है । क्रॉस-ओएस लाइन अंत के प्रबंधन के लिए वैश्विक और प्रति-रेपो दृष्टिकोण हैं।
वैश्विक दृष्टिकोण
लिनक्स या OS X पर हैंडलिंग Git लाइन एंडिंग कॉन्फ़िगर करें:
git config --global core.autocrlf input
विंडोज पर Git लाइन एंडिंग को कॉन्फ़िगर करें:
git config --global core.autocrlf true
प्रति-रेपो दृष्टिकोण:
अपने रेपो की जड़ में, एक .gitattributes
फ़ाइल बनाएं और अपनी परियोजना फ़ाइलों के लिए लाइन समाप्त करने वाली सेटिंग्स को परिभाषित करें, निम्न प्रारूप में एक समय में एक पंक्ति: path_regex line-ending-settings
जहां निम्न में line-ending-settings
से एक है:
- टेक्स्ट
- बाइनरी (वे फाइलें जिनके लिए Git को लाइन एंडिंग को संशोधित नहीं करना चाहिए - क्योंकि इससे कुछ छवि प्रकार जैसे PNGs एक ब्राउज़र में रेंडर नहीं कर सकते हैं)
text
मूल्य कैसे मिलान फ़ाइलों के लिए लाइन अंत संभाल करने पर Git हिदायत करने के लिए आगे विन्यस्त किया जा सकता:
text
- ओएस देशी लाइन के अंत में परिवर्तन लाइन अंत।
text eol=crlf
- CRLF
चेकआउट पर लाइन एंडिंग को परिवर्तित करता है ।
text eol=lf
- LF
चेकआउट पर लाइन एंडिंग को परिवर्तित करता है ।
text=auto
- संवेदनशील डिफॉल्ट जो लाइन को Git के विवेक तक संभालता है।
यहाँ एक नमूने की सामग्री है।
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
यहां लाइन एंडिंग सेटिंग बदलने के बाद अपने रेपो को रिफ्रेश कैसे करें । Tldr:
Git के साथ अपनी फ़ाइलों का बैकअप लें, अपनी रिपॉजिटरी (.git निर्देशिका को छोड़कर) में प्रत्येक फ़ाइल को हटा दें, और फिर एक ही बार में सभी फ़ाइलों को पुनर्स्थापित करें। अपनी वर्तमान फ़ाइलों को Git में सहेजें, ताकि आपका कोई भी कार्य खो न जाए।
git add . -u
git commit -m "Saving files before refreshing line endings"
इंडेक्स निकालें और वर्क डायरेक्टरी को फिर से बनाने के लिए Git को बाध्य करें।
rm .git/index
सभी नई लाइन अंत लेने के लिए Git इंडेक्स को फिर से लिखें।
git reset
फिर से लिखे, सामान्यीकृत फ़ाइलों को दिखाएं।
कुछ मामलों में, यह सब करना होगा। दूसरों को निम्नलिखित अतिरिक्त चरणों को पूरा करने की आवश्यकता हो सकती है:
git status
अपनी सभी परिवर्तित फ़ाइलों को वापस जोड़ें, और उन्हें एक कमिट के लिए तैयार करें। यह आपके लिए मौका है कि कौन सी फाइलें, यदि कोई हैं, का निरीक्षण किया जाए।
git add -u
यहां बहुत सारे संदेश देखने के लिए पूरी तरह से सुरक्षित है जो पढ़ते हैं [s] "चेतावनी: CRLF को फ़ाइल में LF द्वारा प्रतिस्थापित किया जाएगा।"
फ़ाइल को .gitattributes को फिर से लिखें।
git add .gitattributes
अपने भंडार में परिवर्तन करें।
git commit -m "Normalize all the line endings"