গিটের সাথে পরিচালিত কৌশলটি সেরা সিআরএলএফ (ক্যারেজ রিটার্ন, লাইন ফিড) কী?


598

আমি সিআরএলএফ-সমাপ্ত লাইনের সাহায্যে ফাইলগুলি প্রতিশ্রুতিবদ্ধ করার চেষ্টা করেছি, কিন্তু এটি ব্যর্থ হয়েছিল।

আমি আমার উইন্ডোজ কম্পিউটারে একটি পুরো কাজের দিনটি বিভিন্ন কৌশল প্রয়োগ করে কাটিয়েছি এবং গিট ব্যবহার করার চেষ্টা বন্ধ করার পরিবর্তে মার্চুরিয়াল চেষ্টা করার জন্য প্রায় আঁকছিলাম

অনুগ্রহ করে প্রতি উত্তরের জন্য একটি সেরা অনুশীলন ভাগ করুন।

উত্তর:


753

এই প্রশ্ন জিজ্ঞাসার প্রায় চার বছর পরে, অবশেষে আমি একটি উত্তর পেয়েছি যা আমাকে পুরোপুরি সন্তুষ্ট করে !

গিথুব এ বিশদটি দেখুন : লাইন শেষের সাথে ডিল করার জন্য সহায়তার গাইড ।

Git আপনি লাইন একটি রেপো সরাসরি ব্যবহার করার জন্য বৈশিষ্ট্যাবলী বিভক্তি সেট করতে পারবেন টেক্সট অ্যাট্রিবিউট মধ্যে .gitattributesফাইল। এই ফাইলটি রেপোতে প্রতিশ্রুতিবদ্ধ এবং core.autocrlfসেটিংসকে ওভাররাইড করে , গিট সেটিংস নির্বিশেষে সকল ব্যবহারকারীর জন্য সামঞ্জস্যপূর্ণ আচরণ নিশ্চিত করতে আপনাকে মঞ্জুরি দেয়।

এবং এগুলো

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

এখানে একটি .gitattributesফাইল উদাহরণ

# Auto detect text files and perform LF normalization
*        text=auto

*.cs     text diff=csharp
*.java   text diff=java
*.html   text diff=html
*.css    text
*.js     text
*.sql    text

*.csproj text merge=union
*.sln    text merge=union eol=crlf

*.docx   diff=astextplain
*.DOCX   diff=astextplain

# absolute paths are ok, as are globs
/**/postinst* text eol=lf

# paths that don't start with / are treated relative to the .gitattributes folder
relative/path/*.txt text eol=lf

সর্বাধিক জনপ্রিয় প্রোগ্রামিং ভাষার জন্য .gitattributes ফাইল ব্যবহারের জন্য প্রস্তুত একটি সুবিধাজনক সংগ্রহ রয়েছে । আপনাকে শুরু করার জন্য এটি দরকারী।

একবার আপনি নিজের তৈরি বা সামঞ্জস্য করার পরে .gitattributes, আপনাকে একবারের জন্য সমস্ত লাইন শেষ পুনরায় সাধারণকরণ করা উচিত

নোট করুন যে অ্যাপটিতে আপনার প্রকল্পের গিট রেপো খোলার পরে গিটহাব ডেস্কটপ অ্যাপ্লিকেশনটি একটি .gitattributesফাইল প্রস্তাব এবং তৈরি করতে পারে । এটি চেষ্টা করতে, গিয়ার আইকনটিতে ক্লিক করুন (উপরের ডানদিকে কোণায়)> সংগ্রহস্থল সেটিংস ...> লাইন শেষ এবং বৈশিষ্ট্য। আপনাকে প্রস্তাবিত যুক্ত করতে বলা হবে .gitattributesএবং আপনি যদি সম্মত হন তবে অ্যাপ্লিকেশনটি আপনার ভাণ্ডারের সমস্ত ফাইলের একটি সাধারণকরণ সম্পাদন করবে।

অবশেষে, আপনার লাইনের মাইন্ড এন্ড প্রবন্ধটি আরও পটভূমি সরবরাহ করে এবং ব্যাখ্যা করে যে কীভাবে হাতের বিষয়গুলিতে গিটের বিকাশ হয়েছে। আমি এই প্রয়োজনীয় পড়া বিবেচনা করি ।

আপনার দলটিতে সম্ভবত ব্যবহারকারীরা পেয়েছেন যারা EGit বা JGit ব্যবহার করেন (Eclipse এবং TeamCity এর মতো সরঞ্জামগুলি সেগুলি ব্যবহার করে) তাদের পরিবর্তনগুলি সম্পাদন করতে। তবে আপনার ভাগ্য থেকে দূরে থাকবেন, যেমন @ গ্যাটিনুয়েতা এই উত্তরের মন্তব্যে ব্যাখ্যা করেছেন:

আপনার দলে Egit বা JGit এর সাথে কাজ করা লোকেরা থাকলে এই সেটিংটি আপনাকে পুরোপুরি সন্তুষ্ট করবে না, যেহেতু এই সরঞ্জামগুলি কেবল .gitattributes এড়িয়ে যাবে এবং খুশিভাবে CRLF ফাইলগুলিতে https://bugs.eclipse.org/bugs/show_bug.cgi চেক করবে ? আইডি = 342372

সোর্স ট্রি বলুন, একটি কৌশল হতে পারে তাদের অন্য ক্লায়েন্টে তাদের পরিবর্তনগুলি করাতে হবে । আমাদের দলটি তখন অনেকগুলি ব্যবহারের ক্ষেত্রে সেই সরঞ্জামটিকে গ্রহটির ইজিটকে পছন্দ করেছিল।

কে বলেছে সফটওয়্যার সহজ? : - /


7
উইন্ডোজ শেয়ার করতে যত্নশীল .gitattributes?
কর্নেল আতঙ্ক

.gitattributesউইন্ডোজের গিটহাব আপনার প্রকল্পের জন্য কী প্রস্তাব দেয় তা আপনি কীভাবে দেখতে পারেন ? আমি উইন্ডোজের জন্য গিটহাব ইনস্টল করেছি, জিইউআই সংস্করণ শুরু করেছি এবং .gitattributesপরামর্শের সাথে সম্পর্কিত কোনও বিকল্প খুঁজে পেতে অক্ষম ।
জেএলডিয়াজ

4
আপনার দলে ডিমের সাথে কাজ করা লোকেরা থাকলে এই সেটিংটি আপনার সম্পূর্ণরূপে সন্তুষ্ট হবে না, যেহেতু উদাহরণস্বরূপ কেবল .gitattributes উপেক্ষা করা হবে এবং খুশিভাবে CRLF ফাইলগুলি bugs.eclipse.org/bugs/show_bug.cgi?id=342372
gatinueta

19
উইন্ডোজের জন্য আমি সাধারণত গ্লোবাল সেট করতে আগ্রহী core.autocrlf = false- আমি সর্বত্র এলএফ পছন্দ করি, তবে ভিজ্যুয়াল স্টুডিওর মতো কিছু উইন্ডোজ সরঞ্জামগুলি নির্দিষ্ট ফাইলগুলিতে সিআরএলএফ সমাপ্তির জন্য জোর দেয় (এবং এমনকি এটি কয়েকটিতে মিশ্রিত করে)); মংগিং লাইন এন্ডিং না করা সবচেয়ে নিরাপদ বিকল্প। আপনি যদি জানেন যে আপনি কী করছেন তবে আমি সম্ভবত core.autocrlf = inputউইন্ডোজের প্রকল্পগুলির ব্যতিক্রমগুলি ব্যবহার করব এবং যেগুলি আপনি জানেন লাইন এন্ডিংয়ের সংবেদনশীল। অন্যরা দেখায় যে, প্রতিটি শালীন পাঠ্য সম্পাদক এখনই এলএফ সমাপ্তিকে সমর্থন করে। আমি আসলে core.autocrlf = trueএটি প্রতিরোধের চেয়ে সম্ভবত আরও বেশি সমস্যা সৃষ্টি করতে পারে বলে মনে করি ।
অ্যাড্রিয়ান

1
@ গ্যাটিনুয়েটা আরও সুনির্দিষ্টভাবে বলতে গেলে এটি জেজিট ইস্যু। মানে টিমসিটি, যা জেজিটও ব্যবহার করে, সরাসরি আপত্তি উপেক্ষা করে g গিট্যাট্রিবিউটস।
এসডিডিএস

122

লাইন এন্ডিংগুলিকে রূপান্তর করবেন না। ডেটা ব্যাখ্যা করার জন্য ভিসিএসের কাজ নয় - কেবল এটি সংরক্ষণ এবং সংস্করণ করুন। প্রতিটি আধুনিক পাঠ্য সম্পাদক যে কোনও উপায়ে উভয় প্রকারের লাইনের সমাপ্তি পড়তে পারে।


25
Seconded। যদি আপনার অসামঞ্জস্যপূর্ণ লাইন-এন্ডিংয়ের সাথে সমস্যা হয়, তবে যে কেউ ভুল সম্পাদককে সেগুলি ঠিক না করা অবধি ব্যবহার করছেন সে সম্পর্কে সবচেয়ে ভাল সমাধান হ'ল।

136
একমত নন। সমস্ত প্ল্যাটফর্মে নেটিভ লাইনফিড একটি সুবিধা।
জোনাস বাইস্টর্ম

25
সিআরএলএফ ব্যতীত অন্য যে কোনও বিষয় এলে ভিজ্যুয়াল স্টুডিও একটি পিআইটিএ হয়।
ব্রেট রায়ান

32
গিটের লাইন-এন্ডিংগুলিকে রূপান্তর না করার বিকল্প রয়েছে এটি অটোক্রোল্ফ = মিথ্যা এবং যদি আপনি ক্রস-প্ল্যাটফর্ম ডেভেলপ না করেন, যেমন মনো বলুন উইন্ডোজের অধীনে চলার সময় এটি মিথ্যা থেকে বামে রাখা হয় এবং সত্য হিসাবে সেট করা থাকে যদি আপনি ওপেন-সোর্স বিকাশ করবেন মনো এর জন্য
ক্রিস নিকোলা

24
লাইন শেষের সাথে সমস্যা হ'ল সঠিক ডিফারগুলি গণনা করা। সুতরাং উত্তরটি ভুল এবং বিভ্রান্তিকর।
কোসাইন্

84

আপনি প্রায়শই চাইবেন autocrlf=inputযতক্ষণ না আপনি সত্যিই জানেন যে আপনি কী করছেন।

নীচে কিছু অতিরিক্ত প্রসঙ্গ:

core.autocrlf=trueআপনার যদি ডস শেষ হওয়া পছন্দ হয় বা core.autocrlf=inputআপনি ইউনিক্স-নিউলাইন পছন্দ করেন তবে এটি হওয়া উচিত । উভয় ক্ষেত্রেই, আপনার গিট সংগ্রহস্থলের কেবলমাত্র এলএফ থাকবে যা সঠিক জিনিস। এর একমাত্র যুক্তি core.autocrlf=falseছিল যে স্বয়ংক্রিয় হিউরিস্টিক ভুলভাবে কিছু বাইনারিটিকে পাঠ্য হিসাবে সনাক্ত করতে পারে এবং তারপরে আপনার টাইলটি নষ্ট হয়ে যাবে। সুতরাং, core.safecrlf অপরিবর্তনীয় পরিবর্তন ঘটে যদি কোনও ব্যবহারকারীকে সতর্ক করার জন্য বিকল্পটি চালু করা হয়েছিল। প্রকৃতপক্ষে, অপরিবর্তনীয় পরিবর্তনগুলির দুটি সম্ভাবনা রয়েছে - পাঠ্য ফাইলে মিশ্রিত লাইন-এন্ডিং, এই স্বাভাবিককরণটি আকাঙ্ক্ষিত, তাই এই সতর্কতাটিকে উপেক্ষা করা যেতে পারে, বা (খুব সম্ভবত) গীতটি ভুলভাবে আপনার বাইনারি ফাইলটিকে পাঠ্য হিসাবে সনাক্ত করেছে। তারপরে গিটকে এই ফাইলটি বাইনারি হওয়ার জন্য আপনাকে অ্যাট্রিবিউট ব্যবহার করতে হবে।

উপরের অনুচ্ছেদটি মূলত gmane.org এ একটি থ্রেড থেকে টানা হয়েছিল, তবে এটি পরে নেমে গেছে।


31
কেন এটি "রাইট থিং"?
আর্টেম টিখোমিরভ

35
core.autocrlf = সত্য একটি ভয়ানক ধারণা। এই বিকল্পটি নিয়ে আমার কোনও অসুবিধা হয়নি, এছাড়াও আপনি যখনই ভান্ডারটি ক্লোন করবেন তখন আপনাকে এটি সেট করতে হবে মনে রাখতে হবে।
Luís Oliveira

28
আপনি কী করছেন তা যদি না জানেন তবে অটোক্রোল্ফ = সত্য ব্যবহার করবেন না। যদি আপনি ডস / উইনে বিকাশ করেন তবে অটোক্রোল্ফ = মিথ্যা দূরবর্তী এবং স্থানীয় রেপোগুলির মধ্যে সমাপ্তি একই রাখবে এবং প্রায় প্রতিটি পরিস্থিতিতেই সেরা বিকল্প।
ক্রিস নিকোলা

13
@ ক্রিস - আপনার বিকাশকারীদের উইন্ডো এবং মাল্টি-প্ল্যাটফর্ম প্রকল্প রয়েছে যেখানে মাল্টি-প্ল্যাটফর্মের কিছু বিকাশকারী ওএসএক্স বা লিনাক্সে কাজ করে? তাহলে সর্বোত্তম বিকল্পটি অটোক্রোল্ফ = সত্য হওয়া উচিত নয়?
ব্রেট রায়ান

20
আপভোটেড, রিজার্ভেশন সহ। সূচনা অনুচ্ছেদে অসহায়। core.autocrlf=inputক্যানোনিকাল উত্তর। বেশিরভাগ ব্যবহারের ক্ষেত্রে, core.autocrlf=trueএবং core.autocrlf=falseঅতিরিক্ত উত্সাহী (... বিপরীত তবে সমানভাবে ভয়ানক উপায়ে অবশ্যই) এবং তাই অভ্যন্তরীণভাবে ধ্বংসাত্মক। "উইন্ডোজের জন্য উইন্ডো" এর সত্যিকারের "চেকআউট যেমন রয়েছে ততক্ষণে ইউনিক্স-স্টাইলের লাইন সমাপ্তি" (যেমন, core.autocrlf=input) কে তার ডিফল্ট নিউলাইন কৌশল হিসাবে পাঠানো উচিত । তা হয়নি। সুতরাং আমরা এখানে - ফ্রিকিন '2015 - এ এখনও অবিরাম এই নিয়ে বিতর্ক করছি।
সিসিল কারি

58

ধারাবাহিক হওয়ার জন্য দুটি বিকল্প কৌশলমিশ্র পরিবেশে লাইন-এন্ডিং সম্পর্কে (মাইক্রোসফ্ট + লিনাক্স + ম্যাক):

উ: সমস্ত প্রতি সংগ্রহস্থল সেটআপের জন্য গ্লোবাল

1) সকলকে একটি বিন্যাসে রূপান্তর করুন

find . -type f -not -path "./.git/*" -exec dos2unix {} \;
git commit -a -m 'dos2unix conversion'

2) সেট core.autocrlfকরতে inputলিনাক্স / ইউনিক্স বা trueমাইক্রোসফট Windows এ (সংগ্রহস্থলের বা গ্লোবাল)

git config --global core.autocrlf input

3) [ptionচ্ছিক] সেট core.safecrlfকরতে true(থামাতে) বা warn(গাইতে :) সেট করা অতিরিক্ত গার্ড যুক্ত করার সাথে তুলনা করুন যদি বিপরীত নতুন লাইনের রূপান্তর একই ফাইলের ফলাফল হয়

git config --global core.safecrlf true


বি। অথবা প্রতি সংগ্রহের সেটআপ

1) সকলকে একটি বিন্যাসে রূপান্তর করুন

find . -type f -not -path "./.git/*" -exec dos2unix {} \;
git commit -a -m 'dos2unix conversion'

2) .gitattributesআপনার ভাণ্ডারে ফাইল যুক্ত করুন

echo "* text=auto" > .gitattributes
git add .gitattributes
git commit -m 'adding .gitattributes for unified line-ending'

আপনার বাইনারি ফাইলগুলি সম্পর্কে চিন্তা করবেন না - গিট সেগুলি সম্পর্কে যথেষ্ট স্মার্ট হওয়া উচিত।


সেফক্র্ফ / অটোক্রোল্ফ ভেরিয়েবল সম্পর্কে আরও


5
গ্লোবাল অ্যাপ্রোচ == সেট করুন এবং প্রতি রেপো বনাম প্রতি ভোজের জন্য ভুলে যান == অন্যদের তাদের আন্তর্জাতিক কনফিগারেশন পরিবর্তন করার প্রয়োজন হয় না।
lukmdo

4
dos2unixএকটি কমান্ড-লাইন-সরঞ্জাম যা সিস্টেমের উপর নির্ভর করে আপনাকে অতিরিক্তভাবে ইনস্টল করতে হতে পারে
lukmdo

2
এগুলি একচেটিয়া নয়, আপনি একই সাথে উভয় পদ্ধতির ব্যবহার করতে পারেন। এছাড়াও, ব্যবহার করার সময় খুব সাবধানতা অবলম্বন করুন dos2unix- দুর্গতির.git/index ঝুঁকি রয়েছে এবং আমাদের প্রতিটি ফাইলটিতে এটি প্রয়োগ করার দরকার নেই। find ./ -name "*.html"আপনি কোন ফাইলগুলিতে প্রয়োগ করতে চান তা নির্দিষ্ট করে নির্দিষ্ট করা এবং এটি নির্দিষ্ট করা ভাল ।
ক্রেগক্স

6
সতর্কতা: findলাইনগুলি চালানোর আগে জেনে রাখুন: dos2unixগিট ফর উইন্ডোজের সাথে বিতর্কিত কোনও বিতর্কিত (আইএমও ইডিয়োটিক এবং বিপজ্জনক) আচরণ রয়েছে: ইউনিক্সে পরিবর্তিত হওয়ার পরিবর্তে এটি নতুন লাইনের ফর্ম্যাটটি টগল করে (ডস <-> ইউনিক্স) )
লিওনব্লয়

2
এবং অন্য সতর্কতা: আপনার .git ফোল্ডারটি ডস 2 ইউনিক্স করবেন না। এমনি বলছি.
hakre

10

এতে core.autocrlfকনফিগারেশন বিকল্পটি সেট করার চেষ্টা করুন true। এছাড়াও কটাক্ষপাত আছে core.safecrlfবিকল্প।

আসলে মনে হচ্ছে এটি core.safecrlfইতিমধ্যে আপনার ভাণ্ডারে সেট করা আছে কারণ (জোর দেওয়া খনি):

কোর.আউটোক্রল্ফের বর্তমান সেটিংয়ের ক্ষেত্রে যদি এটি না হয় তবে গিটটি ফাইলটি প্রত্যাখ্যান করবে

যদি এটি হয় তবে আপনি যাচাই করতে পারেন যে আপনার পাঠ্য সম্পাদকটি ধারাবাহিকভাবে লাইন এন্ডিংগুলি ব্যবহার করতে কনফিগার করা হয়েছে। যদি কোনও পাঠ্য ফাইলে এলএফ এবং সিআরএলএফ লাইন শেষের মিশ্রণ থাকে তবে আপনি সম্ভবত সমস্যায় পড়ে যাবেন।

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


1
.Gitattributes ফাইলের মাধ্যমে ভান্ডার প্রশস্ত সেটিংস ব্যবহার করা ভাল না? কেবল ভাবছিলাম: প্রতিটি ব্যবহারকারীকে তার মেশিনে তার লাইনের সমাপ্তি সেটিংস যত্ন নিতে বাধ্য করা অসুবিধাজনক ... বা অন্য কোনও ত্রুটি রয়েছে?
ট্রিনোসিস

10

core.autocrlf=falseআমি আমার ভিজ্যুয়াল স্টুডিও ২০১০-তে যাচাই করার সাথে সাথে সমস্ত ফাইলগুলিকে চিহ্নিত করা থেকে আপডেট হওয়া বন্ধ করে দিয়েছি প্রকল্পে । উন্নয়ন দলের অন্য দু'জন সদস্যও উইন্ডোজ সিস্টেম ব্যবহার করছেন যাতে একটি মিশ্র পরিবেশ কার্যকর না হয়, তবুও ডিপোলেট সেটিংস যা রিপোজিটরির সাথে আসে সবসময় ক্লোন করার পরে অবিলম্বে সমস্ত ফাইলকে আপডেট হিসাবে চিহ্নিত করে।

আমি অনুমান করি যে নীচের লাইনটি আপনার পরিবেশের জন্য কী সিআরএলএফ সেটিংস কাজ করে তা সন্ধান করা। বিশেষত যেহেতু আমাদের লিনাক্স বাক্সগুলিতে আরও অনেকগুলি সংগ্রহস্থলের মধ্যে আরও autocrlf = trueভাল ফলাফল পাওয়া যায়।

20+ বছর পরে এবং আমরা এখনও ওএসের মধ্যে লাইন শেষ বৈষম্য নিয়ে কাজ করছি ... দুঃখজনক।


31
@ কমলা ৮০, বৈষম্য দুর্ভাগ্যজনক, তবে এটিকে উইন্ডোজ এর দোষ বলার কোনও কারণ নেই। এলএফ-কেবল একটি ন্যূনতমবাদী দৃষ্টিকোণ থেকে বোঝায়, সম্ভবত; তবে সিআরএলএফ সিআর এবং এলএফ বলতে কী বোঝায় তার ভিত্তিতে আরও বোধগম্য হয়। "ক্যারেজ রিটার্ন" এর অর্থ লাইনের শুরুতে ফিরে আসা; "লাইন ফিড" এর অর্থ পরবর্তী লাইনের শুরুর চেয়ে সরাসরি পরের লাইনে চলে যাওয়া। একটি শব্দার্থক দৃষ্টিকোণ থেকে, উইন্ডোজ উভয় থাকার ক্ষেত্রে আরও সঠিক: শুরুতে ফিরে যান (সিআর) এবং তারপরে একটি লাইন নীচে (এলএফ)।
রায়ান লুন্ডি

40
@ কাইরলেস এখনও আরও "কম্পিউটারে টাইপ রাইটার" ভান করে "আরও সঠিক", এটি বিটিডব্লিউ নয়। টাইপরাইটার উপমা বজায় রাখার অর্থ এই নয় যে এটি ব্যবহারকারীরা কখনই ব্যবহার করবেন না এবং এটির পরিবর্তে দুটি অক্ষর অর্থহীন।
jpswain

1
কয়েক বছরের মধ্যে এই পার্টিতে দেরী হয়ে গেছে, কিন্তু আপনি এই সত্যটি উপেক্ষা করেছেন যে সিআর এবং এলএফ কার্সার অবস্থানের সরঞ্জাম tools ইতিহাসের এই সময়ে "সিআর" পাশাপাশি "কার্সার রিটার্ন" হতে পারে। যদি আমি চাইতাম যে কার্সারটি লাইনের শুরুতে ফিরে আসে তবে আমি অ্যাপ্লিকেশনটিকে এটি করতে বলি। অন্যথায়, যেখানে আমি এটি রেখেছি সেখানেই এটি থাকা দরকার।
EKW

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

@avl_swenen DOS এর আগে এটি খুব সাধারণ আচরণ ছিল এবং যেহেতু মাইক্রোসফ্ট মনে করে যে সামঞ্জস্যতা গুরুত্বপূর্ণ, তখন থেকে এটি সেভাবেই দাঁড়িয়ে আছে। এটি মার্কিন যুক্তরাষ্ট্রে স্ট্যান্ডার্ড পন্থা ছিল (পেরে এএসএ হিসাবে) - আইএসও সিআর + এলএফ এবং এলএফ উভয়কেই অনুমতি দেয় (সুতরাং আবার ডস মানদণ্ডের সাথে সঙ্গতিপূর্ণ ছিল); উভয় ক্ষেত্রে, ষাটের দশক থেকে। মাল্টিকস (ইউনিক্স পূর্ববর্তী) সাহসী / ধর্মঘটের জন্য সিআরকে সমর্থন করে। আজকাল অনেক অ্যাপ্লিকেশন (.NET এর "লাইন দ্বারা বিভক্ত" বৈশিষ্ট্য সহ) তিনটি (লোন সিআর, লোন এলএফ, সিআরএলএফ) এর মধ্যে দুটির জন্য অনুসন্ধান করে এবং সেগুলির প্রত্যেককে শেষ-লাইন হিসাবে বিবেচনা করে। যদিও অনেকগুলি অ্যাপ্লিকেশন এখনও একটি ফাইলের মিশ্র লাইন-এন্ডিং দ্বারা বিভ্রান্ত।
লুয়ান

7

উইন্ডোজ এবং ভিজ্যুয়াল স্টুডিও ব্যবহারকারীদের জন্য এই দুটি বিকল্প যা ম্যাক বা লিনাক্স ব্যবহারকারীদের সাথে কোড ভাগ করে দেয়। বর্ধিত ব্যাখ্যার জন্য, গিটটিব্রিটস ম্যানুয়ালটি পড়ুন

* পাঠ্য = অটো

আপনার রেপুর .gitattributesফাইলগুলিতে যুক্ত করুন:

*   text=auto

এটি দিয়ে সমস্ত ফাইলকে স্বাভাবিক করে তুলবে LF লাইন শেষ ।

এবং আপনার অপারেটিং সিস্টেমের ( core.eolসেটিং) উপর নির্ভর করে , ওয়ার্কিং ট্রিতে থাকা ফাইলগুলি LFইউনিক্স ভিত্তিক সিস্টেমগুলিতে বা স্বাভাবিক করা হবেCRLF জন্য উইন্ডোজ সিস্টেমের ।

এটি কনফিগারেশন যা মাইক্রোসফ্ট। নেট ব্যবহার করে।

উদাহরণ:

Hello\r\nWorld

রেপোতে সর্বদা স্বাভাবিক হবে:

Hello\nWorld

চেকআউটে, উইন্ডোজের কার্যকারী গাছটি রূপান্তরিত হবে:

Hello\r\nWorld

চেকআউটে, ম্যাকের কার্যকারী গাছটি এইভাবে ছেড়ে যাবে:

Hello\nWorld

দ্রষ্টব্য: যদি আপনার রেপোতে ইতিমধ্যে ফাইলগুলি স্বাভাবিক করা না থাকে git statusতবে পরের বারে কোনও পরিবর্তন এলে এই ফাইলগুলিকে সম্পূর্ণরূপে পরিবর্তিত হিসাবে দেখানো হবে এবং অন্যান্য ব্যবহারকারীদের পরে তাদের পরিবর্তনগুলি একীভূত করা ব্যথা হতে পারে। আরও তথ্যের জন্য লাইন শেষ পরিবর্তন করার পরে একটি সংগ্রহস্থল রিফ্রেশ দেখুন ।

core.autocrlf = সত্য

যদি ফাইলটিতে textঅনির্ধারিত .gitattributesথাকে, গিটটি ব্যবহার করেcore.autocrlf থাকে, ফাইলটি রূপান্তর করা উচিত কিনা তা নির্ধারণ করতে কনফিগারেশন ভেরিয়েবল ।

উইন্ডোজ ব্যবহারকারীদের জন্য, git config --global core.autocrlf trueএকটি দুর্দান্ত বিকল্প কারণ:

  • ফাইলগুলি যুক্ত করার পরে LFলাইনের শেষের দিকে স্বাভাবিক করা হয় । রেপোতে যদি ফাইলগুলি সাধারণকরণ না করা হয় তবে এই সেটিংটি তাদের স্পর্শ করবে না।
  • সমস্ত পাঠ্য ফাইল CRLFকার্যকারী ডিরেক্টরিতে লাইন এন্ডে রূপান্তরিত হয় ।

এই পদ্ধতির সাথে সমস্যাটি হ'ল:

  • আপনি যদি উইন্ডোজ ব্যবহারকারী হন তবে autocrlf = inputআপনি LFলাইন এন্ডিং সহ অনেকগুলি ফাইল দেখতে পাবেন । দলের বাকিদের জন্য কোনও বিপত্তি নয়, কারণ আপনার প্রতিশ্রুতিগুলি এখনও LFলাইন শেষের সাথে সাধারণ করা হবে ।
  • আপনি যদি উইন্ডোজ ব্যবহারকারী হন তবে core.autocrlf = falseআপনি LFলাইন শেষের সাথে একগুচ্ছ ফাইলগুলি দেখতে পাবেন এবং আপনি ফাইলগুলির সাথে পরিচয় করিয়ে দিতে পারেনCRLF রেপোতে লাইন এন্ডিং ।
  • বেশিরভাগ ম্যাক ব্যবহারকারী autocrlf = inputফাইল CRLFফাইলের সমাপ্তি সহ ফাইলগুলি ব্যবহার করতে পারেন এবং সম্ভবত উইন্ডোজ ব্যবহারকারীদের কাছ থেকে core.autocrlf = false

1
উইন্ডোজ ব্যবহারকারীদের জন্য আপনার কমান্ড বলে git config --global core.autocrl true। আপনি বলতে চাচ্ছেন git config --global core.autocrlf true
জেলিকেলকিট

6

--- আপডেট 3 --- (2 তারিখের সাথে বিরোধ নেই)

উইন্ডোজ ব্যবহারকারীরা কাজ করতে পছন্দ করেন CRLFএবং লিনাক্স / ম্যাক ব্যবহারকারীরা LFপাঠ্য ফাইলগুলিতে কাজ করা পছন্দ করেন এমন ক্ষেত্রে বিবেচনা করে । একটি সংগ্রহস্থল রক্ষণাবেক্ষণকারীর দৃষ্টিকোণ থেকে উত্তর সরবরাহ করা :

আমার জন্য সর্বোত্তম কৌশল (সমাধান করার জন্য কম সমস্যা) হ'ল: আপনি উইন্ডোজ-কেবলমাত্র প্রকল্পে কাজ করছেন এমনকী সমস্ত পাঠ্য ফাইল LFভিতরে গিট রেপো সহ রাখুন । তারপরে ক্লায়েন্টদের কাজ করার স্বাধীনতা দিন তাদের পছন্দের লাইনের সমাপ্তি শৈলীতে , শর্ত থাকে যে তারা একটি core.autocrlfসম্পত্তি মূল্য বেছে নেবে যা প্রতিশ্রুতি দেওয়ার জন্য ফাইলগুলি সংরক্ষণের সময় আপনার কৌশলটিকে (রেপোতে এলএফ) সম্মান করবে ।

মঞ্চায়ন হ'ল যা বোঝার চেষ্টা করার সময় অনেকে বিভ্রান্ত করেনতুন লাইনের কৌশলগুলি কীভাবে কাজ করে । core.autocrlfসম্পত্তির জন্য সঠিক মানটি বাছাইয়ের আগে নিম্নলিখিত পয়েন্টগুলি অবলম্বন করা অপরিহার্য :

  • কমিট (জন্য একটি টেক্সট ফাইল যোগ করার পদ্ধতি নাটক মঞ্চস্থ এটা) হল অন্য জায়গায় ফাইল কপি মত ভিতরে .git/সঙ্গে উপ-ডিরেক্টরি রূপান্তরিত লাইন শেষা w শ (তার উপর নির্ভর করে core.autocrlfআপনার ক্লায়েন্ট কনফিগ উপর মান)। এই সমস্ত স্থানীয়ভাবে করা হয়।
  • বিন্যাস core.autocrlf প্রশ্নের উত্তর দেওয়ার মতো (সমস্ত ওএসে ঠিক একই প্রশ্ন):
    • "গিট-ক্লায়েন্টকে ক। একটি রিমোট থেকে রেপো পরিবর্তন করা বা টেনে আনা (টানতে) যখন এলএফ-থেকে-সিআরএলএফ রূপান্তরিত করা উচিত খ। কমিটের জন্য কোনও ফাইল যুক্ত করার সময় সিআরএলএফ-থেকে-এলএফ রূপান্তর করতে হবে? " এবং সম্ভাব্য উত্তর (মান) আছেন:
    • false: " উপরোক্ত কিছুই করবেন না ",
    • input:" না শুধুমাত্র b "
    • true: " না a ও ও b "
    • মনে রাখবেন যে " কেবলমাত্র একটি করুন " নেই

ভাগ্যক্রমে

  • গিট ক্লায়েন্ট ডিফল্ট (উইন্ডোজ:, core.autocrlf: trueলিনাক্স / ম্যাক core.autocrlf: false:) এলএফ-কেবল-রেপো কৌশলটির সাথে সামঞ্জস্যপূর্ণ ।
    অর্থ : উইন্ডোজ ক্লায়েন্টরা ডিফল্টরূপে সংগ্রহশালাটি চেক আউট করার সময় সিআরএলএফ রূপান্তরিত করবে এবং প্রতিশ্রুতি যুক্ত করার সময় এলএফ-তে রূপান্তরিত হবে। এবং লিনাক্স ক্লায়েন্টরা ডিফল্টরূপে কোনও রূপান্তর করবে না। এটি তাত্ত্বিকভাবে আপনার রেপোকে কেবলমাত্র lf- রাখে।

দুর্ভাগ্যবশত:

  • জিইআইআই ক্লায়েন্ট থাকতে পারে যারা গিট core.autocrlfমানটিকে সম্মান করে না
  • এমন লোক থাকতে পারে যা আপনার এলএফ-রেপো কৌশলটিকে সম্মান জানাতে কোনও মান ব্যবহার করে না। উদাহরণস্বরূপ তারা core.autocrlf=falseপ্রতিশ্রুতিবদ্ধতার জন্য সিআরএলএফ দিয়ে একটি ফাইল ব্যবহার করে এবং যুক্ত করে।

উপরের ক্লায়েন্টদের দ্বারা প্রতিশ্রুতিবদ্ধ ASAP নন-এলএফ পাঠ্য ফাইলগুলি সনাক্ত করতে আপনি --- আপডেট 2 --- এ বর্ণিত যা অনুসরণ করতে পারেন: ( git grep -I --files-with-matches --perl-regexp '\r' HEADএকটি ক্লায়েন্টের উপর: --with-libpcreপতাকা ব্যবহার করে সংকলিত )

এবং এখানে ধরা হল: । আমি রেপো রক্ষণাবেক্ষণকারী হিসাবে একটিgit.autocrlf=input এটি রাখি যাতে আমি কোনও ভুল প্রতিশ্রুতিবদ্ধ ফাইলগুলি কেবল কমিটের জন্য আবার যুক্ত করে ঠিক করতে পারি। এবং আমি একটি প্রতিশ্রুতিবদ্ধ পাঠ্য সরবরাহ করি: "ভুলভাবে প্রতিশ্রুতিবদ্ধ ফাইলগুলি ঠিক করা"।

যতদূর .gitattributesগোপনে রয়েছে। আমি এটিতে বিশ্বাস করি না, কারণ আরও বেশি ইউআই ক্লায়েন্ট রয়েছে যা এটি বুঝতে পারে না। আমি কেবল এটি পাঠ্য এবং বাইনারি ফাইলগুলির জন্য ইঙ্গিত প্রদান করতে ব্যবহার করি এবং সম্ভবত কিছু ব্যতিক্রমী ফাইলগুলি পতাকাঙ্কিত করে যা সর্বত্র একই লাইন-এন্ডিংগুলি রাখা উচিত:

*.java          text !eol # Don't do auto-detection. Treat as text (don't set any eol rule. use client's)
*.jpg           -text     # Don't do auto-detection. Treat as binary
*.sh            text eol=lf # Don't do auto-detection. Treat as text. Checkout and add with eol=lf
*.bat           text eol=crlf # Treat as text. Checkout and add with eol=crlf

প্রশ্ন: তবে আমরা কেন নতুন লাইনের হ্যান্ডলিং কৌশলটিতে আগ্রহী?

উত্তর: একটি অক্ষর পরিবর্তনের প্রতিশ্রুতিবদ্ধতা এড়াতে , 5000-লাইনের পরিবর্তন হিসাবে উপস্থিত হবেন, কেবলমাত্র ক্লায়েন্ট যে সম্পাদন করে তার পূর্বে সম্পূর্ণ ফাইলটি CRF থেকে lf (বা বিপরীতে) প্রতিশ্রুতি যুক্ত করার আগে রূপান্তর করে। কোনও বিরোধের সমাধানের সাথে জড়িত থাকলে এটি বরং বেদনাদায়ক হতে পারে । অথবা এটি কিছু ক্ষেত্রে অযৌক্তিক দ্বন্দ্বের কারণ হতে পারে।


--- আপডেট 2 ---

গিট ক্লায়েন্টের ডায়াল্টস বেশিরভাগ ক্ষেত্রে কাজ করবে। এমনকি যদি আপনার কেবল উইন্ডোতে কেবল ক্লায়েন্ট থাকে তবে লিনাক্স কেবল ক্লায়েন্ট বা উভয়ই। এইগুলো:

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

সম্পত্তিটি বিভিন্ন স্কোপে সেট করা যায়। --globalশেষে বর্ণিত কিছু আইডিই সমস্যা এড়াতে আমি স্পষ্টভাবে স্কোপটিতে সেট করার পরামর্শ দেব ।

git config core.autocrlf
git config --global core.autocrlf
git config --system core.autocrlf
git config --local core.autocrlf
git config --show-origin core.autocrlf

এছাড়াও ডকুমেন্টেশন গিট করার প্রস্তাব দেওয়া বিপরীতে আমি উইন্ডোজ ব্যবহারের ক্ষেত্রে (আপনার উইন্ডোতে কেবল ক্লায়েন্ট রয়েছে) জোরালোভাবে নিরুৎসাহিত করব git config --global core.autocrlf false । মিথ্যাতে সেট করা রেপোতে সিআরএলএফের সাথে ফাইলগুলি প্রতিশ্রুতিবদ্ধ। তবে আসলেই কোনও কারণ নেই। আপনি কখনই জানেন না যে আপনাকে লিনাক্স ব্যবহারকারীদের সাথে প্রকল্পটি ভাগ করে নেওয়া দরকার। এছাড়াও এটি প্রতিটি ক্লায়েন্টের জন্য একটি অতিরিক্ত পদক্ষেপ যা ডিফল্ট ব্যবহারের পরিবর্তে প্রকল্পে যোগ দেয়।

এখন ফাইলগুলির কয়েকটি বিশেষ ক্ষেত্রে (যেমন *.bat *.sh) আপনি সেগুলি এলএফ বা সিআরএলএফ দিয়ে চেক-আউট করতে চান আপনি ব্যবহার করতে পারেন.gitattributes

আমার জন্য সর্বোত্তম অনুশীলনটি যোগফলটি হ'ল:

  • নিশ্চিত করুন যে প্রতিটি নন-বাইনারি ফাইল গিট রেপোতে (ডিফল্ট আচরণ) এলএফ-এর সাথে প্রতিশ্রুতিবদ্ধ।
  • কোনও ফাইল সিআরএলএফ দ্বারা প্রতিশ্রুতিবদ্ধ না তা নিশ্চিত করার জন্য এই কমান্ডটি ব্যবহার করুন: git grep -I --files-with-matches --perl-regexp '\r' HEAD( দ্রষ্টব্য: উইন্ডোজ ক্লায়েন্টগুলিতে কেবল git-bashলিনাক্স ক্লায়েন্টের মাধ্যমে কেবল --with-libpcreইন- সংকেত ব্যবহার করে সংকলিত থাকলে কাজ করে ./configure))
  • উপরের কমান্ডটি কার্যকর করে যদি আপনি এই জাতীয় কোনও ফাইল খুঁজে পান তবে সেগুলি সংশোধন করুন। এর সাথে জড়িত (অন্তত লিনাক্সে):
    • সেট core.autocrlf=input( --- আপডেট 3 - )
    • ফাইল পরিবর্তন করুন
    • পরিবর্তনটি ফিরিয়ে দিন (ফাইলটি এখনও পরিবর্তিত হিসাবে দেখানো হয়েছে)
    • এটা কমিট
  • কেবল খালি সর্বনিম্ন ব্যবহার করুন .gitattributes
  • ব্যবহারকারীদের core.autocrlfউপরে বর্ণিতটিকে এর ডিফল্ট মানগুলিতে সেট করতে নির্দেশ দিন ।
  • উপস্থিতিতে 100% গণনা করবেন না .gitattributes। আইডিইগুলির গিট-ক্লায়েন্টরা এটিকে উপেক্ষা করতে পারে বা তাদের সাথে আলাদাভাবে আচরণ করতে পারে।

যেমনটি বলা হয়েছে গিট বৈশিষ্ট্যে কিছু জিনিস যুক্ত করা যেতে পারে:

# Always checkout with LF
*.sh            text eol=lf
# Always checkout with CRLF
*.bat           text eol=crlf

আমি .gitattributesবাইনারি ফাইলগুলির জন্য স্বতঃ-সনাক্তকরণ ব্যবহার না করে এর জন্য আরও কিছু নিরাপদ বিকল্প বলে মনে করি :

  • -text(উদাহরণস্বরূপ *.zipবা *.jpgফাইলগুলির জন্য: পাঠ্য হিসাবে বিবেচনা করা হবে না Thus সুতরাং কোনও লাইন-শেষ রূপান্তর চেষ্টা করা হবে না convers রূপান্তর প্রোগ্রামের মাধ্যমে পার্থক্য সম্ভব হতে পারে)
  • text !eol(যেমন জন্য *.java, *.html।। টেক্সট হিসাবে গণ্য, কিন্তু eol শৈলী পছন্দ সেট না করা হয় তাই ক্লায়েন্ট সেটিং ব্যবহার করা হয়)
  • -text -diff -merge(যেমন *.hugefile: পাঠ্য হিসাবে বিবেচনা করা হয় না No কোনও পৃথক / মার্জ হওয়া সম্ভব)

--- পূর্ববর্তী আপডেট ---

এক বেদনাদায়ক উদাহরণ একটি ক্লায়েন্ট যে ফাইল ভুলভাবে কমিট হবে:

নেটবিনস ৮.২ (উইন্ডোজে), ভুলভাবে সিআরএলএফ সহ সমস্ত পাঠ্য ফাইল কমিট করবে , যদি না আপনি স্পষ্টভাবে core.autocrlfবিশ্বব্যাপী হিসাবে সেট করেন । এটি স্ট্যান্ডার্ড গিট ক্লায়েন্ট আচরণের সাথে স্ববিরোধী এবং আপডেট / মার্জ করার সময় পরে প্রচুর সমস্যা সৃষ্টি করে। এই কিছু করে তোলে ফাইল বিভিন্ন প্রদর্শিত (যদিও তারা না) এমনকি যখন আপনি প্রত্যাবর্তন
নেটবিনে একই আচরণ হ'ল এমনকি আপনি যদি .gitattributesআপনার প্রকল্পে সঠিক যোগ করে থাকেন ।

প্রতিশ্রুতি দেওয়ার পরে নিম্নলিখিত কমান্ডটি ব্যবহার করা, কমপক্ষে আপনার গিট রেপোতে লাইন শেষ হওয়ার সমস্যা রয়েছে কিনা তা সনাক্ত করতে আপনাকে কমপক্ষে সাহায্য করবে: git grep -I --files-with-matches --perl-regexp '\r' HEAD

.gitattributesঅবশেষে উপলব্ধি করার জন্য যে আমি এটির উপর নির্ভর করতে পারি না তার সর্বোত্তম সম্ভাব্য ব্যবহারটি সামনে আসতে ঘন্টা সময় ব্যয় করেছি।
দুর্ভাগ্যক্রমে, জেজিট-ভিত্তিক সম্পাদক যতক্ষণ না বিদ্যমান থাকে (যা .gitattributesসঠিকভাবে পরিচালনা করতে পারে না ), নিরাপদ সমাধান হ'ল এলডিএফকে সর্বত্র এমনকি সম্পাদক-স্তরেও বাধ্য করা।

নিম্নলিখিত anti-CRLFজীবাণুনাশক ব্যবহার করুন ।


আমি আপনার সাথে একমত যে এটি সর্বোত্তম পন্থা, এলএফ সমর্থন ছাড়া কেউই সম্পাদক ব্যবহার করা উচিত নয়। কিন্তু আপনার সঙ্গে সতর্কতা অবলম্বন করা .gitattributesলাইন, এটা গীত <2.10 মধ্যে অনিচ্ছাকৃত conseques আছে, দেখতে stackoverflow.com/a/29508751/2261442
phk

এটিকে ঘৃণা করুন ... আমার কাছে আমার পক্ষে git config --global core.autocrlf falseউকিল করার অনেকগুলি উত্তর রয়েছে এবং .gitattributesকেবল নির্দেশের ক্ষেত্রে ইওলকে মোকাবেলা করার পরামর্শ দিচ্ছি ।
ভনসি

5

এই মাত্র একটি হল কার্যসংক্রান্ত সমাধান:

সাধারণ ক্ষেত্রে, গিট দিয়ে যে সমাধানগুলি প্রেরণ করা হয় তা ব্যবহার করুন। এগুলি বেশিরভাগ ক্ষেত্রে দুর্দান্ত কাজ করে। আপনি .gitattributes সেট করে উইন্ডোজ এবং ইউনিক্স ভিত্তিক সিস্টেমে ডেভলপমেন্ট ভাগ করে নিলে এলএফ-তে জোর করুন

আমার ক্ষেত্রে উইন্ডোতে> 10 জন প্রোগ্রামার একটি প্রকল্প বিকাশকারী ছিলেন। এই প্রকল্পটি সিআরএলএফ দিয়ে চেক ইন করা হয়েছিল এবং এলএফ-তে বাধ্য করার কোনও বিকল্প ছিল না।

এলএফ ফর্ম্যাটে কোনও প্রভাব ছাড়াই কিছু সেটিংস অভ্যন্তরীণভাবে আমার মেশিনে লেখা হয়েছিল; এইভাবে কিছু ছোট ফাইল প্রতিটি ছোট ফাইলের পরিবর্তে বিশ্বব্যাপী এলএফতে পরিবর্তন করা হয়েছিল।

আমার সমাধান:

উইন্ডোজ-মেশিনস: সবকিছু যেমন হয় তেমন ছেড়ে দিন। কোনও কিছুরই যত্ন নেই, যেহেতু আপনি একটি ডিফল্ট উইন্ডোজ 'একাকী নেকড়ে' বিকাশকারী এবং আপনাকে এটির মতো পরিচালনা করতে হবে: "বিস্তৃত বিশ্বে আর কোনও সিস্টেম নেই, তাই না?"

ইউনিক্স-মেশিন

  1. একটি কনফিগার [alias]বিভাগে নিম্নলিখিত লাইন যুক্ত করুন । এই কমান্ডটি সমস্ত পরিবর্তিত (যেমন পরিবর্তিত / নতুন) ফাইলগুলি তালিকাভুক্ত করে:

    lc = "!f() { git status --porcelain \
                 | egrep -r \"^(\?| ).\*\\(.[a-zA-Z])*\" \
                 | cut -c 4- ; }; f "
  2. এই সমস্ত পরিবর্তিত ফাইলকে ডস ফর্ম্যাটে রূপান্তর করুন :

    unix2dos $(git lc)
  3. Ptionচ্ছিকভাবে ...

    1. এই প্রক্রিয়াটি স্বয়ংক্রিয় করতে এই ক্রিয়াটির জন্য গিট হুক তৈরি করুন

    2. প্যারাম ব্যবহার করুন এবং এটি অন্তর্ভুক্ত করুন এবং grepকেবলমাত্র নির্দিষ্ট ফাইলের সাথে মেলে ফাংশনটি সংশোধন করুন , যেমন:

      ... | egrep -r "^(\?| ).*\.(txt|conf)" | ...
    3. অতিরিক্ত শর্টকাট ব্যবহার করে এটিকে আরও বেশি সুবিধাজনক করে তুলুন:

      c2dos = "!f() { unix2dos $(git lc) ; }; f "

      ... এবং টাইপ করে রূপান্তরিত জিনিসগুলিকে ফায়ার করুন

      git c2dos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.