मैं कोशिश कर रहा हूं कि किसी भी ऑपरेशन के लिए कोई भी लाइन एंडिंग नहीं बदलने की कोशिश की जाए। दुर्भाग्य से, ऐसा लगता है कि ऐसा नहीं है। मैंने इसे निम्न परीक्षण मामले में कम कर दिया है, जिसमें इस व्यवहार को अक्षम करने के लिए कई अलग-अलग तंत्र हैं जैसा कि मुझे मिल सकता है।
- दो मशीनों (विंडोज कंप्यूटर = ए, लिनक्स कंप्यूटर = बी) से शुरू करें
- दोनों मशीनों पर:
git config --global core.autocrlf false - दोनों मशीनों पर:
git config --global core.eol crlf(बस मामले में)
- खाली फ़ोल्डर से A. पर नया भंडार बनाएं:
git init --shared(तब बनाई गई.gitनिर्देशिका को अनसाइड करें ).gitignoreरिपॉजिटरी में एक नई फाइल बनाएं.gitattributesएकल पंक्ति के साथ भंडार में एक नई फ़ाइल बनाएँ :* -textgit add ., तोgit commit -m "initial commit", आस-पास काम करने के लिए जैसे यह ।git branch master_recv- उपाय जोड़ें
document.txtCRLF युक्त रिपॉजिटरी में एक नई फ़ाइल बनाएँ- कमिट:
git add -Aतबgit commit -m "<something>" - ध्यान दें कि A में
document.txtअभी भी CRLF मौजूद है (और इसे डिलीट कर रहा है और--hardCRLF के साथ अभी भी संस्करण को वापस लौटा रहा है)
- कंप्यूटर B को पूरी निर्देशिका SCP
new fileCRLF युक्त एक नई फ़ाइल जोड़ें- कमिट:
git add -Aतबgit commit -m "<something>" - ध्यान दें कि B
document.txtऔर Bnew fileदोनों में अभी भी CRLF है
- पुल बी के मास्टर को A:
git pull <remote> master:master_recv - A
document.txtको LF में बदल दिया है। अतिरिक्त फ़ाइलnew fileमें LF भी है।
यदि B एक Windows मशीन है तो समस्या उत्पन्न नहीं होती है।


core.autocrlfहमेशा झूठे किया गया? ऐसा लगता है कि आपके पास\nअपने भंडार में पहले से ही लाइन अंत है? नहीं है कोई परिवर्तन करने के लिए सेटिंग\nकरने के लिए अपने भंडार में\r\nअपने काम निर्देशिका में।