উইন্ডোজ গিট "সতর্কতা: এলএফ সিআরএলএফ দ্বারা প্রতিস্থাপন করা হবে", যে সতর্কতা লেজ পিছনে?


147

env:

  • উইন্ডোজ 7
  • msysgit

আমি প্রথম বলেছি git commit:

warning: LF will be replaced by CRLF. 

এই সতর্কতা লেজ পিছনে?
আমি উইন্ডোজে ফাইল সম্পাদনা করি, লাইনের শেষটি CRLFএই ছবিটির মতোই:
এখানে চিত্র বর্ণনা লিখুন
এবং গিট এটি LFরেপো প্রতিশ্রুতিবদ্ধ করার জন্য এতে পরিবর্তন করে ।
সুতরাং আমি মনে করি সঠিক সতর্কতা হ'ল:

warning: CRLF will be replaced by LF. 


2
@ দেবনুল মানে হুঁশিয়ারিটি লেজ পিছনে, তাই না?
হংহে.উইউ

@ হংহে.উইউ না, এটি উইন্ডোজে নেই। আমি আমার উত্তরটি নীচে
ভনসি

11
দুর্দান্ত প্রশ্ন কারণ প্রকৃতপক্ষে, সতর্কতাটি পিছিয়ে রয়েছে বলে মনে হচ্ছে। এটা সত্যিই রূপান্তর সম্পর্কে এই সতর্কবার্তা পেতে বিভ্রান্তিকর এর CRLF করার একটি উপর কমিট কারণ সতর্কবার্তা, এবং হোয়াইটস্পেস এর গীত যেভাবে বিষয়টা পরিচালনা ব্যাখ্যা সাহায্য করবে কোন পরিমাণ পিছন
স্টিজন ডি উইট

1
@ স্টিজেডেভিট আমি আপনার উত্তরটি উত্তর হিসাবে মন্তব্য দেখতে দেখতে চাই।
ব্যবহারকারী 1460043

উত্তর:


184

সতর্কতা: এলএফ সিআরএলএফ দ্বারা প্রতিস্থাপন করা হবে।

আপনি যে সম্পাদকটি ব্যবহার করছেন তার উপর নির্ভর করে, এলএফ সহ একটি পাঠ্য ফাইল সিআরএলএফ দিয়ে সংরক্ষণ করা প্রয়োজন হবে না: সাম্প্রতিক সম্পাদকেরা ইওল শৈলী সংরক্ষণ করতে পারেন । তবে এই গিট কনফিগারেশন সেটিংগুলি সেগুলি পরিবর্তন করার জন্য জোর দেয় ...

কেবল তা নিশ্চিত করুন (যেমন আমি এখানে সুপারিশ করছি ):

git config --global core.autocrlf false

এইভাবে, আপনি কোনও স্বয়ংক্রিয় রূপান্তর এড়াতে পারেন এবং এখনও একটি .gitattributesফাইল এবং core.eolনির্দেশের মাধ্যমে সেগুলি নির্দিষ্ট করতে পারেন ।


উইন্ডোজ গিট "এলআরএফ সিআরএলএফ দ্বারা প্রতিস্থাপন করা হবে"
এই সতর্কতা লেজ পিছনে?

না: আপনি উইন্ডোতে রয়েছেন এবং git configসহায়তা পৃষ্ঠার উল্লেখ নেই

CRLFআপনার কাজের ডিরেক্টরিতে লাইন এন্ডিং থাকতে চাইলে এই সেটিংটি ব্যবহার করুন যদিও সারণীর সাধারণ লাইনের শেষ নেই।

মধ্যে "বর্ণনা অনুযায়ী Git CRLF সঙ্গে এলএফ প্রতিস্থাপন ", এটি শুধুমাত্র চেকআউট উপর ঘটা উচিত , (কমিট না) সঙ্গে core.autocrlf=true

       repo
    /        \ 
crlf->lf    lf->crlf 
 /              \    

জিয়াওপ্যাং -এর উত্তরে যেমন উল্লেখ করা হয়েছে , সেই সতর্কতা একইরকম:

সতর্কতা: (আপনি যদি এটি পরীক্ষা করে দেখেন / বা আপনার বর্তমান core.autocrlfকনফিগারেশন সহ অন্য ফোল্ডারে ক্লোন করেন ), এলএফ সিআরএলএফ
দ্বারা প্রতিস্থাপন করা হবে আপনার (বর্তমান) কার্যনির্বাহী ডিরেক্টরিতে ফাইলটির মূল লাইন শেষ হবে।

git-for-windows/git1242 ইস্যুতে উল্লিখিত হিসাবে :

আমি এখনও এই বার্তাটি বিভ্রান্তিকর মনে করছি, বার্তাটি সমস্যার আরও ভাল ব্যাখ্যা অন্তর্ভুক্ত করার জন্য বাড়ানো যেতে পারে, উদাহরণস্বরূপ: " file.jsonফাইলটি সরিয়ে আবার পরীক্ষা করার পরে এলআরএফ সিআরএলএফ দ্বারা প্রতিস্থাপন করা হবে "।

দ্রষ্টব্য: গিট 2.19 (সেপ্টেম্বর 2018), ব্যবহার করার সময় core.autocrlf, "এলএফ সিআরএলএফ দ্বারা প্রতিস্থাপন করা হবে" সতর্কতা এখন দমন করা হবে


কয়লার যেমন সঠিকভাবে মন্তব্য করেছে , যদি প্রতিশ্রুতিবদ্ধতার কোনও রূপান্তর হয় তবে তা LFকেবল।

এই নির্দিষ্ট সতর্কতাটি " LF will be replaced by CRLF" রূপান্তর.কম থেকে এসেছে # চেক_সেফ_সিআরএলএফ () :

if (checksafe == SAFE_CRLF_WARN)
  warning("LF will be replaced by CRLF in %s.
           The file will have its original line endings 
           in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
  die("LF would be replaced by CRLF in %s", path);

এটি দ্বারা ডাকা হয় convert.c#crlf_to_git(), নিজে দ্বারা ডাকা হয় convert.c#convert_to_git(), নিজে দ্বারা ডাকা হয় convert.c#renormalize_buffer()

এবং এটি সর্বশেষ renormalize_buffer()দ্বারা ডাকা হয় merge-recursive.c#blob_unchanged()

সুতরাং আমি সন্দেহ করি যে এই রূপান্তরটি git commitকেবল তখনই ঘটেছিল যদি বলা হয় প্রতিশ্রুতি একত্রীকরণ প্রক্রিয়ার অংশ।


দ্রষ্টব্য: গিট 2.17 (Q2 2018) এর সাথে একটি কোড ক্লিনআপ কিছু ব্যাখ্যা যুক্ত করেছে।

টর্স্টেন বাগেরসৌসেন ( ) দ্বারা 8462ff4 (13 জানুয়ারী 2018) প্রতিশ্রুতিবদ্ধ দেখুন । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 9bc89b1 , 13 ফেব্রুয়ারী 2018)tboegi
gitster

রূপান্তর_পৃষ্ঠীকরণ (): নিরাপদ_ক্রিফ / চেকস্যাফ ইন্টি ক্যান_ফ্লেগ হয়ে যায়

কল করার সময় convert_to_git(), checksafeপ্যারামিটারটি নির্ধারণ করে যে EOL রূপান্তর ( CRLF --> LF --> CRLF) পরিষ্কারভাবে রাউন্ডআট্রিপ না করলে কি হবে ।
লাইন এন্ডিংগুলি পুনর্নবীকরণ করা উচিত ( CRLF --> LF) বা সে হিসাবে রাখা উচিত কিনা তাও এটি সংজ্ঞায়িত করে ।

চেকস্যাফ safe_crlfএই মানগুলির সাথে একটি এনাম ছিল :

SAFE_CRLF_FALSE:       do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL:        die in case of EOL roundtrip errors
SAFE_CRLF_WARN:        print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF:   keep all line endings as they are

দ্রষ্টব্য যে reg৪62২ বিএফ ৪ (" convert_to_git(): safe_crlf/checksafeহয়ে যায় int conv_flags", 2018-01-13, গিট ২.১17.০) গিট ২.১ cycle চক্রের পিছনে পুনরায় লেখকরা সেটিং সত্ত্বেওautocrlf একটি সতর্কতা বার্তা উত্পন্ন করেছিল ।safecrlf=false

দেখুন কমিট 6cb0912 দ্বারা (04 জুন 2018) এন্থনি Sottile ( asottile)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 8063ff9 , 28 জুন 2018)


1
হ্যাঁ, বেশিরভাগ সম্পাদক ইওএল স্টাইল সংরক্ষণ করতে পারেন তবে বেশিরভাগ সম্পাদকের সাথে একই প্রকল্পে নতুন ফাইল তৈরি করার সময় এর কোনও প্রভাব নেই। নিশ্চিত করুন যে আপনি কোনও এলএফ প্রকল্প চেকআউট করছেন না, "পিএসএস ভাবেন, আমার সম্পাদক এলএফ লাইন এন্ডিংগুলি পরিচালনা করতে পারে, আমার অটোক্রোল্ফের দরকার নেই" এবং তারপরে নিজেই নতুন ফাইলগুলি এলএফ লাইনের শেষে সেট করতে ভুলে যান।

15
@ ভনসি আমাকে অবশ্যই স্বীকার করবে যে আমি এটি পাচ্ছি না। গিট-বুক জানিয়েছে যে গিটটি যখন আপনি প্রতিশ্রুতিবদ্ধ হন তখন সিআরএলএফ লাইনটি শেষের দিকে এলএফ-তে রূপান্তর করে এবং এর বিপরীতে যখন এটি আপনার ফাইল সিস্টেমে কোড পরীক্ষা করে। এর অর্থ এই যে প্রতিশ্রুতিবদ্ধতার সাথে এলএফ এবং কখনও সিআরএলএফ- তে রূপান্তর হবে । যার অর্থ উল্লিখিত সতর্কতাটি ভুল। রয়ে core.autocrlf=trueহবে সবসময় রেপো তে এলএফ মধ্যে উত্পাদ, এবং কাজ গাছ এই প্রোগ্রামটিতে মধ্যে CRLF (এমনকি অ উইন্ডোজ অধীনে)। সূত্র: লিংক
কয়েলার

12
"এই সতর্কতার লেজটি কি পিছিয়ে আছে? এটি কেবলমাত্র চেকআউটেই হওয়া উচিত" আমি প্রতিশ্রুতিবদ্ধতার উপর এই সঠিক সতর্কতাটি দেখছি । তাই হ্যাঁ , এটা অনগ্রসর হয়। এটি পশ্চাদপটে হওয়ায় এটি আমার সন্ধান করছে। খুশি অন্যরাও তা খেয়াল করলেন! এটি এমন লোকদের কাছে খুব বিভ্রান্তিকর যা সত্যই এই সতর্কতাগুলি দেখে এটি পড়তে বলে যে এটি প্রতিশ্রুত বার্তায় সিআরএলএফ রূপান্তরিত হবে।
স্টিজন ডি উইট

7
"সুতরাং আমি সন্দেহ করি যে এই রূপান্তরটি গিট কমিটের সময়ে ঘটে তবেই যদি বলা হয় প্রতিশ্রুতি একত্রীকরণ প্রক্রিয়ার অংশ।" নাঃ। আমি নিয়মিত কমিটে এটি দেখতে পাচ্ছি।
স্টিজন ডি উইট

3
এই বার্তাটি সম্পর্কে যে অংশটি আমাকে বাগড়িত করেছে তা হ'ল এটি একেবারে পপ আপ। আমার কেন সতর্ক হওয়া দরকার যে গিটটি এটি করার জন্য যা আমি কনফিগার করেছি ঠিক তা করতে চলেছে। "হেই, আমরা এখনও আপনার জন্য লাইন এন্ডিংগুলিতে রূপান্তর করছি, আপনি যেমন আমাদের বলেছেন" বলে আমার সতর্কতার দরকার নেই। সিস্টেমটি যখন ডিজাইনের সাথে আচরণ করে, এটি অপ্রয়োজনীয় সতর্কতা দেয় না বা অপ্রাসঙ্গিক বার্তাগুলির সমুদ্রের মধ্যে লোকেরা গুরুত্বপূর্ণ সতর্কতাগুলি মিস করে।
ব্রেন্ট লারসন

27

হ্যাঁ সতর্কবার্তা পিছনের দিকে।

এবং বাস্তবে এটি প্রথম স্থানে সতর্কতা হওয়া উচিত নয়। কারণ এই সমস্ত সতর্কতাটি বলছে (তবে দুর্ভাগ্যক্রমে পিছনে দিকে) হ'ল আপনার ফাইলের সিআরএলএফ অক্ষরগুলি উইন্ডোজ লাইন সমাপ্তির সাথে এলএফ এর প্রতিশ্রুতি দ্বারা প্রতিস্থাপিত হবে। যার অর্থ এটি * নিক্স এবং ম্যাকোস দ্বারা ব্যবহৃত একই লাইন সমাপ্তিতে সাধারণীকরণ।

অদ্ভুত কিছু হচ্ছে না, এটি হ'ল সাধারণভাবে আপনি সাধারণত চান এমন আচরণ।

বর্তমান রূপে এই সতর্কতা দুটি জিনিসের মধ্যে একটি:

  1. একটি অতিরিক্ত দুর্ভাগ্যবান সতর্কতা বার্তার সাথে মিলিত দুর্ভাগ্য বাগ বা
  2. আপনাকে সত্যিকার অর্থে এটি ভাবানোর জন্য একটি চতুর চক্রান্ত ...

;)


1
আশ্চর্যের বিষয় হ'ল আপনি যদি জোর করে উইন্ডোজের স্থানীয় ফাইলগুলিকে এলএফ তে রূপান্তর করেন তবে আপনি ফাইলগুলিও গিট করতে পারবেন না, বার্তাটি অভিযোগ করে এবং আপনার প্রতিশ্রুতি ভঙ্গ করে।
পিএইচপিগুরু

24

- 9 জুলাই আপডেট করুন ---

@ এমজিউকার মন্তব্য অনুসারে "এটি সঠিক এবং সঠিক" সরানো হয়েছে

======

কোন । এটি বর্তমানে আপনার ফাইলগুলির সাথে কথা বলছে না CRLF। পরিবর্তে এটি ফাইলগুলির সাথে কথা বলছে LF

এটি পড়া উচিত:

সতর্কতা: ( আপনি যদি এটি পরীক্ষা করে দেখেন / বা আপনার বর্তমান কোর.আউটোক্রল্ফ কনফিগারেশন দিয়ে অন্য ফোল্ডারে ক্লোন করেন ) এলএফ সিআরএলএফ দ্বারা প্রতিস্থাপন করা হবে

আপনার ( বর্তমান ) কার্যকারী ডিরেক্টরিতে ফাইলটির মূল লাইন শেষ থাকবে ।

এই ছবিটির অর্থ কী তা বোঝানো উচিত। এখানে চিত্র বর্ণনা লিখুন


1
সুন্দর চিত্রণ। +1 টি। আমি আপনার উত্তরটি আরও দৃশ্যমানতার জন্য আমার সাথে উল্লেখ করেছি।
ভনসি

আমার জন্য যা ভাল কাজ করে তা হ'ল: 1) কোর.আউটোক্রল্ফ = মিথ্যা 2) ইন্টেলিজ সেট লাইন বিভাজক (\ n)। আমি ম্যাক এবং উইন্ডোজ উভয় ক্ষেত্রেই ইন্টেলিজ আইডিয়া ব্যবহার করি।
জিয়াও পেং - ZenUML.com

উইন্ডোতে ফাইলটি তৈরি করা হলেও এটির ইউনিক্স / ম্যাক লাইন সমাপ্তি (এলএফ) থাকতে পারে এবং আপনার গিট কনফিগারেশন সম্পত্তি অটোক্রোল্ফটি সত্য হলে এটি ঘটতে পারে। মূলত গিট আপনার তৈরি করা ফাইলটি পরিবর্তন করতে যাচ্ছে না তবে এটি উইন্ডোজ লাইন সমাপ্তি দিয়ে এটি পরীক্ষা করে / ক্লোন করবে (আপনার অটোক্রোল্ফ সেটিংয়ের কারণে)
প্যাট্রিক

1
"যদি আপনি এটি পরীক্ষা করে দেখেন / অথবা আপনার বর্তমান কোর.আউটোক্রলফ কনফিগারেশন সহ অন্য ফোল্ডারে ক্লোন করে থাকেন" তবে সতর্কতাটি কীভাবে সঠিক এবং সঠিক? মূল বার্তাটি এটাই বলে না। এটি বলছে যে এটি সিআরএলএফ দ্বারা প্রতিস্থাপিত হবে (সম্ভবত না), এটি বোঝায় যে এটি সিআরএলএফ মোডে রেপোতে সংরক্ষণ করা হবে, ভবিষ্যতের কোনও অনুমানমূলক চেকআউটে নয়।
mgiuca

12

এই সব অনুমান core.autocrlf=true

আসল ত্রুটি:

সতর্কতা: এলএফ সিআরএলএফ
দ্বারা প্রতিস্থাপন করা হবে আপনার কার্যক্ষম ডিরেক্টরিতে ফাইলটির মূল লাইন শেষ হবে।

ত্রুটি কী পড়তে হবে:

সতর্কতা: এলএফ আপনার কর্মক্ষম ডিরেক্টরিতে সিআরএলএফ দ্বারা প্রতিস্থাপন করা
হবে ফাইলটি গিট সংগ্রহস্থলে তার মূল এলএফ লাইন শেষ হবে

এখানে ব্যাখ্যা :

এই সুবিধাজনক রূপান্তরটির পার্শ্ব-প্রতিক্রিয়া, এবং আপনি যে সতর্কতাটি দেখছেন সে সম্পর্কে এটি হ'ল যে আপনি নিজের লেখা টেক্সট ফাইলটির মূলত সিআরএলএফের পরিবর্তে এলএফ এর সমাপ্তি থাকলে এটি যথারীতি এলএফ দিয়ে সংরক্ষণ করা হবে তবে চেক করা হলে পরে এটির সিআরএলএফ শেষ হবে। সাধারণ পাঠ্য ফাইলের জন্য এটি সাধারণত ঠিক থাকে। এই ক্ষেত্রে সতর্কতাটি "আপনার তথ্যের জন্য", তবে যদি গিটটি ভুলভাবে বাইনারি ফাইলটিকে একটি পাঠ্য ফাইল হিসাবে মূল্যায়ন করে তবে এটি একটি গুরুত্বপূর্ণ সতর্কতা কারণ গিটটি তখন আপনার বাইনারি ফাইলকে কলুষিত করবে।

মূলত, একটি স্থানীয় ফাইল যা আগে এলএফ ছিল এখন স্থানীয়ভাবে সিআরএলএফ থাকবে


7

git config --global core.autocrlf false গ্লোবাল সেটিংসের জন্য ভাল কাজ করে।

তবে আপনি যদি ভিজ্যুয়াল স্টুডিও ব্যবহার .gitattributesকরছেন তবে কিছু ধরণের প্রকল্পের জন্যও ( যেমন সি # শ্রেণির পাঠাগার অ্যাপ্লিকেশন ) পরিবর্তন করতে হবে:

  • লাইন সরান * text=auto

1

আমি সেট করার পরে আমি কোনও সংগ্রহস্থলের উইন্ডোতে সম্পাদিত ফাইলগুলি (যা সম্ভবত এটি চালু ছিল ?) core.autocrlf=trueযখন সিএনএলএফ পরিবর্তিত হবে (নোট "সিআরএলএফ এলএফ দ্বারা প্রতিস্থাপিত হবে" নোট git addকরুন git commit) এলএফ) যা আমি সেট করার আগে চেক আউট হয়েছিলcore.autocrlf=true

আমি একটি নতুন চেকআউট করেছি core.autocrlf=trueএবং এখন আমি এই বার্তাগুলি পাচ্ছি না।


0

আপনি যদি ভিজুয়াল স্টুডিও 2017, 2019 ব্যবহার করছেন তবে আপনি এটি করতে পারেন:

  1. মূল .gitignore খুলুন (সমাধানগুলিতে অন্য প্রকল্পগুলিতে আনার্স .gitignore ফাইলগুলি আপডেট করুন বা সরান)
  2. নীচের কোডটি পেস্ট করুন:
[core]
 autocrlf = false
[filter "lfs"]
 required = true
 clean = git-lfs clean -- %f
 smudge = git-lfs smudge -- %f
 process = git-lfs filter-process

1
এই "কোড" দেখে মনে হচ্ছে এটি কোনও কনফিগার ফাইলে থাকা উচিত .gitconfigবা .git/configনা .gitignore, যা গিট দ্বারা উপেক্ষা করা ফাইলগুলিকে নির্দিষ্ট করে।
ডেভিডা

আমি এটি .git / কনফিগারেশনে যুক্ত করেছি তবে এখনও "সতর্কতা: CRLF এলএফ দ্বারা প্রতিস্থাপন করা হবে" প্রদর্শিত হবে
সের্গেই

0

কেবল সাধারণ কাজটি করুন:

  1. গিট-হাব (শেল) খুলুন এবং ডিরেক্টরি ফাইলটিতে নেভিগেট করুন (সিডি / এ / বি / সি / ...)
  2. ডস 2 ইউনিক্স (কখনও কখনও ডস 2 ইউনিক্স.এক্সই) চালনা করুন
  3. এখন প্রতিশ্রুতিবদ্ধ চেষ্টা করুন। আপনি যদি আবার একই ত্রুটি পান। ডস 2 ইউনিক্সের পরিবর্তে উপরের সমস্ত পদক্ষেপগুলি সম্পাদন করুন, ইউনিক্সডডোক্স (কিছুক্ষণে ইউনিক্স 2 ডস.এক্সে) করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.