গিট-ডিফের আউটপুটে সাদা স্থান রঙ করা


151

কোড ফর্ম্যাটিং সম্পর্কে আমি এক প্রকারের পিউরিস্ট :)। আমি প্রায়শই অপ্রয়োজনীয় সাদা স্পেসগুলি সরিয়ে ফেলি (কেবল ডাব্লু ডাব্লু, লাইনগুলির শেষে ডাব্লু ইত্যাদি)। এমনকি আমি এই ধরণের লাইনগুলিকে লাল রঙে দেখানোর জন্য ভিএম সেট করেছি।

আমার সমস্যা হ'ল গিট-ডিফ ব্যবহার করে আমি প্রায়শই এরকম কিছু দেখতে পাই:

-      else{ 
+      else{

আমার গিট-ডিফ রঙিন হলেও আমি পার্থক্য দেখতে পাচ্ছি না (সেই নির্দিষ্ট পরিস্থিতিতে আমি লাইনের শেষে 1 ডাব্লু সরিয়ে দিয়েছি)। ডাব্লু ডাব্লুএসকে লাল রঙে দেখানোর জন্য গিট-ডিফ বলার কোনও উপায় আছে কি? (উদাহরণস্বরূপ যারা / \ s + $ / regexp এর সাথে মেলে)।


4
আপনি যদি রঙগুলি উল্টে করেন (অগ্রভাগের পটভূমি এবং পটভূমি), এইরকম সাদা স্থান পরিবর্তন হবে। অনেকগুলি টার্মিনালে এটি সম্পাদন করার একটি সহজ উপায় হ'ল মাউসের সাহায্যে প্রশ্নে লেখাটি হাইলাইট করা। এই কৌশলটি কেবল একটি রঙিন ডিফের সাথে কাজ করে।
ফ্লারেক্স

উত্তর:


172

আপনার color.diff.Wites স্পেস কনফিগারেশন সেটিংস সেট করতে হবে, উদাহরণস্বরূপ:

 git config color.diff.whitespace "red reverse"

(আমি ধরে নিচ্ছি যে আপনি ইতিমধ্যে যেহেতু রঙিন প্যাচগুলি দেখেন বলে আপনার কাছে ইতিমধ্যে আছে color.diffবা color.uiসেট আপ হয়েছে ))autogit diff

তুমি ভাল টিউন হোয়াইটস্পেস ত্রুটি লাল হাইলাইট করা হয়, তারপর আপনি পরিবর্তন করতে পারেন ধরণ চান core.whitespace, কিন্তু blank-at-eolডিফল্টরূপে সক্রিয় করা হয় যাতে আপনি সম্ভবত উদাহরণস্বরূপ আপনি উল্লেখ জন্য পরিবর্তনের প্রয়োজন হবে না।

বিভ্রান্তির একটি সম্ভাব্য উত্স হ'ল git diffহোয়াইটস্পেস ত্রুটিগুলি কেবল প্রবর্তিত রেখাগুলিতেই হাইলাইট করা হয়, অপসারণকারীরা নয়। ( আপডেট: পল হুইটেকার তার উত্তরে যেমন উল্লেখ করেছেন , যেটা আপনার আপলোড করা উচিত :), আপনি এগুলির সাথে পার্থক্যের ধারণাটি পরিবর্তন করে দেখতে পারেন git diff -R))

গিট কনফিগারেশন ম্যান পৃষ্ঠাতে আপনি এই কনফিগারেশন বিকল্পগুলিতে আরও ডকুমেন্টেশন পেতে পারেন

আপনি যদি কলডেজ-R ব্যবহার করতে না চান তবে আপনি ডিফ ম্যান পৃষ্ঠা থেকে হোয়াইটস্পেস ত্রুটি হাইলাইট বিকল্পটি ব্যবহার করতে পারেন ।

--ws-ত্রুটি হাইলাইট =

Color.diff.whitespace দ্বারা বর্ণিত বর্ণের দ্বারা বর্ণিত রেখাগুলিতে স্বাক্ষরের ত্রুটিগুলি হাইলাইট করুন। পুরানো, নতুন, প্রসঙ্গে কমা দ্বারা বিযুক্ত তালিকা is যখন এই বিকল্পটি দেওয়া হয় না, শুধুমাত্র নতুন লাইনে শ্বেতস্পেসের ত্রুটিগুলি হাইলাইট করা হয়। উদাহরণস্বরূপ --Wes- ত্রুটি-হাইলাইট = নতুন, পুরানো হাইলাইটগুলি উভয় মোছা এবং যুক্ত লাইনগুলিতে হোয়াইটস্পেস ত্রুটি। সমস্ত পুরানো, নতুন, প্রসঙ্গে শর্ট হ্যান্ড হিসাবে ব্যবহার করা যেতে পারে।

git diff --ws-error-highlight=new,old <file>

অথবা

git diff --ws-error-highlight=all <file>

আমি স্থায়ীভাবে এটি চালু করার এবং কোনও কোনও নাম ব্যবহার করে কনফিগারেশনে সংরক্ষণ করার কোনও উপায় জানি না:

git config alias.df 'diff --ws-error-highlight=all'

এখন আপনি ব্যবহার করতে পারেন:

git df <file>

লাল পরিবর্তনগুলি দেখতে।

নোট করুন যে গিট 2.11 (Q4 2016) এর সাথে , এই এলিফটি প্রতিস্থাপন করা হতে পারে:

git config diff.wsErrorHighlight all

দেখুন উপর ডকgit diff এবং উপরgit config


33
"বিভ্রান্তির একটি সম্ভাব্য উত্স হ'ল গিট ডিফের আউটপুটে, শ্বেত স্পেসের ত্রুটিগুলি কেবল প্রবর্তিত রেখাগুলিতেই হাইলাইট করা হয়, মুছে ফেলা নয়" " একদম ঠিক! এবং সরানো লাইনের জন্যও এটি দেখানোর কোনও উপায় নেই? (আরে, এটি আলাদা) :)
রাডারেক

6
আপনার ~ / .gitconfig
সিমল্যাক্স

17
@ আদারেক: আপনি বিপরীত বিকল্পটি ব্যবহার করতে পারেন:git diff -R
নীল রঙের

6
এর জন্য কি কোনও বাগ রিপোর্ট রয়েছে? যদি না হয় তবে মনে হয় সেখানে থাকা উচিত।
আজেদি 32

3
এই কাজ git config diff.wsErrorHighlight allgit config --global [...]পরিবর্তনগুলি বিশ্বব্যাপী তৈরি করতে ব্যবহার করুন (অর্থাত্ সমস্ত রেপোকে প্রভাবিত করুন)।
ফিলিপ আলভারেজ

141

git diff -Rসরানো রেখাগুলি যুক্ত লাইনগুলিতে পরিণত করতে ব্যবহার করুন । তারপরে শ্বেত স্পেসটি হাইলাইট করা হবে।

(এই মার্ক এর উত্তর থেকে, আপনি ইতিমধ্যে হোয়াইটস্পেস সক্রিয় hightlighting আছে অনুমান রঙের সেটিংস অনুযায়ী। ক্রেডিট জন্য এই পদ্ধতি এ junio এর পোস্ট যায় http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal- গিট-ডিফ-টিডি 5653205 এইচটিএমএল সহ )

উদাহরণস্বরূপ, ডস লাইন শেষ হতে কোনও ফাইলকে ইউনিক্সে রূপান্তর করার সময়, git diff -Rস্পষ্টভাবে আমাকে ^Mলাইনগুলির শেষে উপস্থিত অক্ষর (ডিস) দেখায় । ছাড়া -R(এবং ছাড়া -wইত্যাদি) এটা দেখায় যে সম্পূর্ণ ফাইল পরিবর্তিত হয়েছে, কিন্তু প্রদর্শন করা হয় না কিভাবে।


4
অবশ্যই, আপনি git diff | cat -A | less -Sমরিয়া হয়ে থাকলে আপনি এটি করতেও পারেন, তবে ক্যারেজ রিটার্ন ছাড়াও, catএস্কেপগুলি আক্ষরিকভাবে কোনও রঙ হাইলাইট করে।
পল হুইটকার

3
@ পল_উইটকার cat -Aপোর্টেবল নয়। বিএসডি বিড়ালটিতে এমন কোনও বিকল্প নেই। cat -vetপরিবর্তে ব্যবহার করুন।
7heo.tk

9

ব্যবহার git diff --color | less -R-Rরঙ নিয়ন্ত্রণ কোড মানুষের বান্ধব করে তোলে।

তারপরে আপনি lessনিয়মিত এক্সপ্রেশন অনুসন্ধান ব্যবহার করতে পারেন , যেমন

/[[:space:]]+$

এই নিয়মিত অভিব্যক্তিটি উপায় দ্বারাও কাজ করে vim
জোসে আলবান

এই শেষ ধারণা less -R শুধু এটা নল থেকে আমার জন্য সহজ করে ls --colorদিয়ে less
মেনাচেম

0

আমার সংস্করণটি git diffইতিমধ্যে এটির জন্য মনে হচ্ছে - আমার কাছে 1.7.4.1 গিট আছে এবং সেট আছে color.ui = auto


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