मैंने अपना रेपो autocrlf=true
के साथ बनाया और फिर कुछ चेकआउट बनाए और autocrlf=false
के साथ काम करता है। फिर autocrlf=true
(ओएस विन) पर वापस स्विच किया गया। सब कुछ ठीक लग रहा था, जब तक कि मैंने शाखाओं के बीच कुछ विलय शुरू नहीं किया। कई मर्ज विवाद उठ गए, जहां eols
बदलने के कारण पूरी फ़ाइल को बदल दिया गया था (मुझे लगता है कि यह उन फाइलें थीं, जिन्हें चेक किया गया था और autocrlf=false
के साथ काम किया गया था)।मर्ज विवादों से बचने के लिए जीआईटी भंडार में सीआरएलएफ की मरम्मत कैसे करें
कुछ इतिहास है, जो मेरे लिए लायक है, इसलिए मैं कुछ रेपो बनाने और नए जीवन को शुरू करने के बजाय परिवर्तित रूपांतरण eols
के साथ काम करना पसंद करता हूं।
यह मैं कैसे समझते हैं autocrlf
(ओएस विन):
मामले यदि autocrlf=true
WorkingTree -> commit -> GITRepository
CRLF CRLF to LF LF
LF no conv. LF
WorkingTree <- checkout <- GITRepository
CRLF LF to CRLF LF
मामले यदि autocrlf=false
WorkingTree -> commit -> GITRepository
CRLF no conv. CRLF
LF no conv. LF
WorkingTree <- checkout <- GITRepository
CRLF no conv. CRLF
LF no conv. LF
अब मैं autocrlf=false
साथ GIT उपयोग करना चाहते हैं, तो मैंने प्रत्येक शाखा को चेकआउट करने का निर्णय लिया, उपयोगिता EOL converter और कॉम के साथ स्रोत फ़ाइलों के eols
की मरम्मत सीआरएलएफ के साथ वापस मिलें। मैंने ऐसा किया, लेकिन समय के बाद, अभी भी कुछ फाइलें हैं, जिन्हें मैंने autocrlf
से false
(या इन फ़ाइलों को पुरानी तय तय करने से विलय करने के लिए नहीं आया था) के बाद शायद चेक आउट नहीं किया गया था? रूपांतरण के दौरान मैंने मास्क * .filetype का उपयोग किया सभी एलएफ को सीआरएलएफ में स्वचालित रूप से संसाधित करना ताकि मेरे लिए ऐसी स्थिति के लिए कोई अन्य स्पष्टीकरण न हो)। मैंने उन सभी को फिर से प्रतिबद्ध करने के लिए touch
फ़ाइलों को भी आजमाने की कोशिश की (जैसा कि मैंने यहां कहीं स्टैक ओवरफ्लो में देखा था) लेकिन दिनांक परिवर्तन जीआईटी AFAIK के लिए प्रासंगिक नहीं है। मैंने How to undo the damage of autocrlf भी पढ़ा है, लेकिन यह सुनिश्चित नहीं है कि यह मेरा मामला है, और विज़ार्ड की चाल को भी समझ में नहीं आता है।
मैं इस गड़बड़ी से कैसे दूर हो सकता हूं, कृपया?
क्या आपने 'autocrlf = input' की कोशिश की है? यदि आपका रेपो सार्वजनिक रूप से उपलब्ध नहीं कराया गया था तो आप अपने इतिहास में लाइन एंडिंग को साफ करने के लिए उस और 'फ़िल्टर-शाखा-इंडेक्स-फ़िल्टर' का उपयोग कर सकते हैं – knittl
@knittl: यदि मैं समझता हूं, तो यह एलएफ के साथ इतिहास में सभी कामों को फिर से लिख देगा। क्या मैं सही हू? फिर मुझे चेकआउट (ओएस विन) के बाद 'सीआरएलएफ' प्राप्त करने के लिए शायद 'autocrlf = true' चालू करना होगा। क्या रेपो को सीधे 'सीआरएलएफ' में परिवर्तित करने का विकल्प है और उसके बाद 'autocrlf = false' छोड़ दें? – Andik
एक बार भंडार को सीआरएलएफ में परिवर्तित करने के बाद आपको 'autocrlf = false' प्राप्त करने में सक्षम होना चाहिए, इस प्रकार कोई लाइन समाप्ति परिवर्तित नहीं हो जाती है और फ़ाइल – knittl