लाइन-एंडिंग सेटिंग्स कैसे बदलें


581

क्या कोई फ़ाइल या मेनू है जो मुझे लाइन एंडिंग से निपटने के लिए सेटिंग्स को बदलने देगा?

मैंने पढ़ा कि 3 विकल्प हैं:

  1. विंडोज-स्टाइल चेकआउट करें, यूनिक्स-स्टाइल करें

    पाठ फ़ाइलों की जाँच करते समय Git LF को CRLF में बदल देगा। पाठ फ़ाइलें करते समय, CRLF को LF में बदल दिया जाएगा। क्रॉस-प्लेटफ़ॉर्म परियोजनाओं के लिए, यह विंडोज पर अनुशंसित सेटिंग है ("core.autocrlf" "true" पर सेट है)

  2. के रूप में चेकआउट है, प्रतिबद्ध यूनिक्स शैली

    पाठ फ़ाइलों की जाँच करते समय Git कोई रूपांतरण नहीं करेगा। पाठ फ़ाइलें करते समय, CRLF को LF में बदल दिया जाएगा। क्रॉस-प्लेटफ़ॉर्म परियोजनाओं के लिए यह यूनिक्स पर अनुशंसित सेटिंग है ("core.autocrlf" "इनपुट" पर सेट है)।

  3. के रूप में चेकआउट है, के रूप में प्रतिबद्ध है

    पाठ फ़ाइलों की जाँच करते या करते समय Git कोई भी रूपांतरण नहीं करेगा। क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट्स के लिए इस विकल्प को चुनने की अनुशंसा नहीं की जाती है ("core.autocrlf" को "गलत" पर सेट किया जाता है)



3
इनमें से कौन सा डिफ़ॉल्ट है?
स्टीफन

2
ऐसा नहीं लगता कि डिफ़ॉल्ट सही है, जो मुझे लगता है कि उचित है।
स्टीफन

18
मुझे वास्तव में लगता है कि 3-आरडी विकल्प बेहतर काम करता है। अन्यथा मैं अक्सर ऐसी स्थितियों में रहा हूं जब मैं एक ही प्लेटफॉर्म (विंडोज / लिनक्स) पर बैच और श दोनों स्क्रिप्ट्स को संपादित करता हूं और फिर उन्हें कमिट करता हूं और एक प्लेटफॉर्म के लिए लाइन एंडिंग को स्वचालित रूप से "फिक्स" करता हूं ... नहीं, मैं स्वयं होना पसंद करता हूं- लाइन एंडिंग के बारे में सचेत और कमिटमेंट / उन्हें चेकआउट करें जैसे वे हैं।
जस्टअमार्टिन

1
@ न्यूट्रीनो मैं चाहता हूं कि यह सच था, लेकिन आईडीई का एक उदाहरण जो आपके लाइन एंडिंग के साथ गड़बड़ करता है (और इसे बंद करने के लिए एक उचित कॉन्फ़िगरेशन विकल्प प्रदान नहीं करता है) विजुअल स्टूडियो है।
कैसियो रेनन

जवाबों:


527

इसे नियंत्रित करने का सामान्य तरीका है git config

उदाहरण के लिए

git config --global core.autocrlf true

जानकारी के लिए, इस लिंक पर नीचे स्क्रॉल करके Pro Git को "core.autocrlf" नाम दिया गया है।


यदि आप जानना चाहते हैं कि यह किस फ़ाइल में सहेजा गया है, तो आप कमांड चला सकते हैं:

git config --global --edit

और गिट ग्लोबल कॉन्फिग फाइल एक टेक्स्ट एडिटर में खुलनी चाहिए, और आप देख सकते हैं कि वह फाइल कहां से लोड की गई थी।


17
trueया falseकेवल दो विकल्प हैं, इंस्टॉलर में तीन हैं
qwertymk

49
inputतीसरा विकल्प है (जैसा कि मैंने दिए गए लिंक में बताया है)। 3 विकल्प हैं true| false| input
कोडिंगविथस्पीक

2
इस विषय पर एक और अच्छा SO प्रश्न है: stackoverflow.com/questions/3206843/…
CodingWithSpike

31
वास्तव में, यदि आप अपने स्वयं के प्रश्न को कॉपी / पेस्ट किए गए अंशों में फिर से पढ़ते हैं: "1 ... ("core.autocrlf" is set to "true") ... 2 ... ("core.autocrlf" is set to "input") ... 3 ... ("core.autocrlf" is set to "false")"तो आपने मूल रूप से अपने प्रश्न का उत्तर दिया है? :)
कोडिंगविथस्पीक

2
यह इसके चारों ओर जाने का पुराना तरीका है। .Gitattributes फ़ाइल को देखें।
3

176

ओएस में प्रयुक्त लाइन एंडिंग प्रारूप

  • विंडोज: CR(कैरिज रिटर्न \r) और LF(लाइनफेड )\n ) जोड़ी
  • OSX, Linux: LF(लाइनफेड \n)

हम प्रत्येक ओएस के लिए गिट को ऑटो-सही लाइन एंडिंग फॉर्मेट में दो तरीकों से कॉन्फ़िगर कर सकते हैं।

  1. Git Global कॉन्फ़िगरेशन
  2. .gitattributesफ़ाइल का उपयोग करें

वैश्विक विन्यास

लिनक्स / OSX में
git config --global core.autocrlf input

यह किसी CRLFको भी ठीक कर देगाLF आपके द्वारा किए पर ।

विंडोज में
git config --global core.autocrlf true

यह सुनिश्चित करेगा कि जब आप विंडोज़ में चेकआउट करते हैं, तो सभी LFमें परिवर्तित हो जाएगाCRLF

.gitattributes फ़ाइल

एक .gitattributesफाइल रखना एक अच्छा विचार है क्योंकि हम नहीं चाहते कि हमारी टीम में हर कोई अपना कॉन्फिगर सेट करे। इस फ़ाइल को रेपो के मूल पथ में रखना चाहिए और यदि कोई मौजूद है, तो git इसका सम्मान करेगा।

* text=auto

यह सभी फ़ाइलों को पाठ फ़ाइलों के रूप में मानेगा और ओएस की लाइन को चेकआउट पर और LFस्वचालित रूप से कमिट पर वापस परिवर्तित करेगा। यदि स्पष्ट रूप से बताना चाहते हैं, तो उपयोग करें

* text eol=crlf
* text eol=lf

पहला चेकआउट के लिए है और दूसरा कमिटमेंट के लिए है।

*.jpg binary

सभी का इलाज करें .jpgपथ की परवाह किए बिना छवियों को द्विआधारी फ़ाइलों के रूप में । तो कोई रूपांतरण की जरूरत है।

या आप पथ क्वालिफायर जोड़ सकते हैं:

my_path/**/*.jpg binary

3
ओएस एक्स के बारे में क्या, जो CRअकेले (गाड़ी वापसी) का उपयोग करता है ?
jww

23
लीगेसी MacOS (अर्थात, MacOS 9 और पहले का) CRअकेले उपयोग किया जाता है, लेकिन आमतौर पर OS X उपयोग करता है LF
जचरी वेयर

2
क्या मैं विंडोज पर * text eol=lfचेकआउट करने के लिए दो बार उपयोग कर सकता हूं LF?
mbomb007

1
Gitattributes प्रलेखन सेटिंग के अनुसार यह * text=autoतय करने की अनुमति देता है कि सामग्री पाठ है या नहीं। सभी फ़ाइलों को पाठ के लिए मजबूर करना * textकेवल होना चाहिए ।
एड्रियन डब्ल्यू

मैं eol=crमैक ओएस 9 और अन्य विरासत प्लेटफार्मों पर फ़ाइलों के लिए कैसे सेट कर सकता हूं ?
नोबल अपलिफ्ट

36

एक रिपॉजिटरी सेटिंग समाधान के लिए, जिसे सभी डेवलपर्स के लिए पुनर्वितरित किया जा सकता है, .gitattributes फ़ाइल में पाठ विशेषता देखें । इस तरह, डेवलपर्स को रिपॉजिटरी पर मैन्युअल रूप से अपनी लाइन एंडिंग सेट करने की आवश्यकता नहीं है, और क्योंकि विभिन्न रिपॉजिटरी में अलग-अलग लाइन एंडिंग स्टाइल हो सकते हैं, वैश्विक core.autocrlf सबसे अच्छा नहीं है, कम से कम मेरी राय में।

उदाहरण के लिए किसी दिए गए पथ पर इस विशेषता को परेशान करना [ - पाठ] git को लाइन एंडिंग को छूने और चेक आउट करने के लिए बाध्य नहीं करेगा। मेरी राय में, यह सबसे अच्छा व्यवहार है, क्योंकि अधिकांश आधुनिक टेक्स्ट एडिटर दोनों प्रकार के लाइन एंडिंग को संभाल सकते हैं। इसके अलावा, यदि आप एक डेवलपर के रूप में अभी भी चेक-इन करते समय लाइन एंडिंग रूपांतरण करना चाहते हैं, तो आप अभी भी कुछ फ़ाइलों से मिलान करने के लिए पथ सेट कर सकते हैं या अपनी रिपॉजिटरी पर ईओएल विशेषता (.gitattributes) सेट कर सकते हैं।

इस संबंधित पोस्ट की भी जांच करें, जो फ़ाइल का वर्णन करता है। फ़ाइल और टेक्स्ट विशेषता को और अधिक विस्तार से बताता है: Git के साथ सबसे अच्छी CRLF (कैरिज रिटर्न, लाइन फीड) की हैंडलिंग रणनीति क्या है?


. - textदेता है is not a valid attribute name: .gitattributes:1तो कृपया डालcat .gitattributes
jangorecki

3

मेरे लिए क्या चाल चल रहा था कमांड

git config auto.crlf false

परियोजना के फ़ोल्डर के अंदर, मैं इसे विशेष रूप से एक परियोजना के लिए चाहता था।

उस कमांड ने फ़ाइल को पथ {project_name} / में बदल दिया। लाइनों को जोड़कर git / config (fyi .It एक छिपा हुआ फ़ोल्डर है)।

[auto]
    crlf = false

फ़ाइल के अंत में। मुझे लगता है कि फ़ाइल को बदलने के समान ही चाल है।


1

यदि आप फ़ाइल स्वरूपों को वापस बदलना चाहते हैं जो कि पीसी प्रारूप से यूनिक्स प्रारूप में बदल दिया गया है।

(1) आपको कछुआ GIT को पुन: स्थापित करने की आवश्यकता है और "लाइन एंडिंग रूपांतरण" अनुभाग में सुनिश्चित करें कि आपने "चेक आउट इन - चेक इन इन" विकल्प चुना है।

(२) और शेष विन्यासों को यथावत रखें।

(3) एक बार स्थापना हो जाने के बाद

(4) उन सभी फ़ाइल एक्सटेंशनों को लिखें, जो UNIX फॉर्मेट में टेक्स्ट फाइल (Extension.txt) में परिवर्तित हो जाते हैं।

ex:*.dsp
   *.dsw

(5) फ़ाइल को अपने क्लोन में कॉपी करें GITBASH में निम्न कमांड चलाएँ

while read -r a;
do
find . -type f -name "$a" -exec dos2unix {} \;
done<extension.txt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.