দীর্ঘ লাইনের জন্য আমার কীভাবে গিট ডিফার ব্যবহার করা উচিত?


235

আমি একটি ফাইলে গিট-ডিফ চালাচ্ছি , তবে পরিবর্তনটি একটি দীর্ঘ লাইনের শেষে।

যদি আমি ডানদিকে সরানোর জন্য কার্সার কীগুলি ব্যবহার করি তবে এটি রঙ-কোডিং হারায় worse এবং আরও খারাপ লাইনগুলি লাইন আপ করে না - এটি পরিবর্তনটি ট্র্যাক করা আরও শক্ত করে তোলে।

সেই সমস্যাটি রোধ করার জন্য বা কেবল পরিবর্তে লাইনগুলি মোড়ানো করার কোনও উপায় আছে?

আমি মিটডব্লু 32 এর মাধ্যমে 1.5 গিট চালাচ্ছি।


6
আপনি 'গিট ডিফারফ - কালার-ওয়ার্ডস' চেষ্টা করতে চাইতে পারেন, এটি স্ক্রোলিং সমস্যার সমাধান করে না, তবে শব্দের পরিবর্তনগুলি একক লাইনে প্রসঙ্গে ঘিরে রয়েছে!
কেভিনফ

7
"ভাঁজ" ব্যবহার করা বেশ ভালভাবে কাজ করছে বলে মনে হচ্ছে:git diff --color-words | fold
অ্যামি

@ অ্যামি আমি ব্যবহার করার চেষ্টা করেছি foldকিন্তু এটি রঙ মুছে ফেলে। যেহেতু আপনি নির্দিষ্ট করেছেন --color-wordsআমি ধরে নিয়েছি আপনি রঙগুলি পাস করতে পেরেছেন fold। কিভাবে?
নিরো গ্রিস

উত্তর:


120

আউটপুট প্রদর্শন git diffআপনি যা যা পেজার ব্যবহার করছেন তা দ্বারা পরিচালিত হয়।

লিনাক্সের অধীনে সাধারণত lessব্যবহৃত হত would

আপনি গিটকে GIT_PAGERপরিবেশের ভেরিয়েবল সেট করে একটি আলাদা পেজার ব্যবহার করতে বলতে পারেন । আপনি যদি পেজিংয়ের বিষয়ে আপত্তি করেন না (উদাহরণস্বরূপ, আপনার টার্মিনালটি আপনাকে আবার স্ক্রোল করতে দেয়) আপনি GIT_PAGERকোনও পেজার ব্যবহার বন্ধ করার জন্য স্পষ্টভাবে খালি সেট করার চেষ্টা করতে পারেন । লিনাক্সের অধীনে:

$ GIT_PAGER='' git diff

পেজার ছাড়া লাইনগুলি মোড়ানো হবে।

যদি আপনার টার্মিনাল রঙিন আউটপুট সমর্থন করে না, আপনি --no-colorআর্গুমেন্টটি ব্যবহার করে বা আপনার গিট কনফিগারেশন ফাইলের রঙ বিভাগে একটি এন্ট্রি রেখে এটিও বন্ধ করতে পারেন ।

$ GIT_PAGER='' git diff --no-color

1
আমি নিশ্চিত করতে পারি যে GIT_PAGER ফাঁকাতে সেট করার ফলে লাইনগুলি মোড়ানো হয়। এটি পড়ার জন্য এটি কিছুটা কঠিন করে তোলে এমন চিহ্নগুলিও সন্নিবেশ করায় তবে প্রয়োজনে আমি একটি আলাদা পেজার খুঁজে পাই, তাই এখনও একটি বৈধ উত্তর। :) ধন্যবাদ।
পিটার বুটন

1
এটি এমন কোন চিহ্নগুলি যুক্ত করে যা এটি পড়তে সমস্যা করে? আমিও এই সমস্যাটি সমাধান করতে আমার উত্তর সম্পাদনা করতে সক্ষম হতে পারি।
চামচমাইজার

বেশিরভাগই প্রতিটি নতুন লাইনের জন্য "<- [এম" থাকে (যেখানে <- একটি একক তীরচিহ্ন ছিল), তবে চিহ্নিতকারীগুলি যেখানে (আমার মনে হয়) প্রতিটি রঙ "<- [1 মি" এবং "<- [32 মি" এর মতো শুরু হয়েছিল।
পিটার বুফটন

1
- কোন বর্ণ যুক্তি কি আদৌ সহায়তা করে? আমি নিউলাইন চরিত্রগুলি সম্পর্কে নিশ্চিত নই।
চাঁদমিশার

হ্যাঁ, ধন্যবাদ, এটি সমস্ত অযাচিত সামগ্রী প্রদর্শিত হতে বাধা দেয়, তাই নিউলাইনগুলি অবশ্যই রঙ সম্পর্কিত হতে পারে related
পিটার বুফটন 18

229

অথবা আপনি যদি ডিফল্ট পেজার হিসাবে কম ব্যবহার করেন -Sতবে কমগুলিতে পুনরায় মোড়কের জন্য ভিন্নটি দেখার সময় কেবল টাইপ করুন ।


60
সম্পর্কিত টিপ, --word-diffপরিবর্তিত শব্দের বর্ণ-বর্ণযুক্ত হাইলাইট দেখতে ব্যবহার করুন
জোশ ডিহল

5
এর জন্য কেবল একটি নোট যেহেতু আমি দেখেছি কিছু লোকের সাথে এটির সমস্যা রয়েছে, -এস থেকে আলাদা (নিশ্চিত করুন আপনি শিফট + গুলি
মারছেন

2
@ জোশডিহেল: আমি আশা করি আপনি আপত্তি করবেন না ... আমি মনে করি যে --word-diffঅংশটি এর নিজস্ব উত্তর পাওয়ার যোগ্য, কারণ এটি আমাকে অন্তর্নিহিত সমস্যা সমাধানের জন্য অনেক কিছু করার জন্য আঘাত করেছে: দীর্ঘ লাইনে কী পরিবর্তন হয়েছে তা নির্ধারণ করা। : তাই, আমি এটা এক তৈরি করেছি stackoverflow.com/a/19253759/313756
lindes

1
দ্রষ্টব্য: এটি OS X (ম্যাভেরিক্স) এ কাজ করছে বলে মনে হচ্ছে না।
ডিলিথিয়ামম্যাট্রিক্স

@ জারমেস এটি আমার পক্ষে ম্যাভেরিকসে, কম 418 এর সাথে কাজ করে। নিশ্চিত করুন যে আপনি -Sএকটি মূলধন এস দিয়ে টাইপ করছেন, তা নয় -s। আমি টাইপ করার পরে নীচে নীচে "দীর্ঘ লাইনগুলি ভাঁজ করুন (রিটার্ন টিপুন)" বার্তাটি কম দেখায় -Sএবং তারপরে রিটার্ন টিপলে মোড়কে সক্ষম করে।
ররি ও'কেনে

115

git configমোড়কের জন্য আপনি পেজার সেটআপ করতেও ব্যবহার করতে পারেন ।

$ git config core.pager 'less -r' 

বর্তমান প্রকল্পের জন্য পেজার সেটিংস সেট করে।

$ git config --global core.pager 'less -r' 

সমস্ত প্রকল্পের জন্য বিশ্বব্যাপী পেজার সেট করে


3
msysgit (1.8.1.msysgit.1) দিয়ে এটি আমার পক্ষে ডাবল কোট ব্যবহার করে কাজ করেছে -git config --global core.pager "less -r"
করিম

এটি আমাকে ওএস এক্স-এ গিট ডিফারেন্টের মাধ্যমে স্থায়ীভাবে মোড়ানো করতে পারে thanks ধন্যবাদ!
থমসন কমার

এটি কাজ করে, তবে কেন বুঝতে পারছি না। কেউ কি ব্যাখ্যা করতে পারেন? man less, -rমোড়ানো সম্পর্কে কিছুই বলে।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

@ থমসনকমার '-r' ওএস এক্স-এ নিয়ন্ত্রণের অক্ষরগুলি দেখানোর সাথে সম্পর্কিত ... আপনি কীভাবে এই কাজটি পেলেন?
ডিলিথিয়ামম্যাট্রিক্স

আমি এখনই নিশ্চিত মনে করতে পারি না। কিন্তু কিছু লিঙ্ক এটি আরো ব্যাখ্যা পাওয়া যায়নি: michael.otacoo.com/linux-2/avoid-escape-characters-in-git superuser.com/questions/366930/... unix.stackexchange.com/questions/19317/...
Shoan

49

পূর্ণ ক্রেডিট সঙ্গে জোশ Diehl মধ্যে একটি মন্তব্য করার জন্য এই উত্তর , আমি তবুও মত মনে এই নিজেই কাছে একটি উত্তর করা কর্তব্য, তাই এটি যোগ:

দীর্ঘ লাইনে পার্থক্য দেখার সাথে মোকাবিলা করার একটি উপায় হ'ল শব্দ-ভিত্তিক পার্থক্য ব্যবহার করা। এটি দিয়ে করা যেতে পারে:

git diff --word-diff

এই ক্ষেত্রে, আপনি একটি উল্লেখযোগ্যভাবে পৃথক পৃথক আউটপুট পাবেন, যা আপনাকে নির্দিষ্ট করে দেখায় যে একটি লাইনের মধ্যে কী পরিবর্তন হয়েছে।

উদাহরণস্বরূপ, এর মতো কিছু পাওয়ার পরিবর্তে:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line

আপনি এই জাতীয় কিছু পেতে পারেন:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line

বা এর পরিবর্তে রঙিনকরণ সহ:

কেবল <কোড> গিট ডিফার </ কোড> এর ফলাফল

আপনি এটি পেতে পারেন:

<কোড> গিট ডিফ - ওয়ার্ড-ডিফ </ কোড> এর ফলাফল

এখন, আপনি যদি সত্যই দীর্ঘ লাইনের সাথে তুলনা করেন, তবে আপনি পেজারের পরিস্থিতি নিয়ে প্রাথমিকভাবে বর্ণিত সমস্যাগুলি নিয়ে থাকতে পারেন এবং যা অন্য জবাবগুলিতে আপাত সন্তুষ্টির জন্য সমাধান করা হয়েছে। আশা করি রেখার কী পরিবর্তন হয়েছে তা আরও সহজেই সনাক্ত করার জন্য এটি আপনাকে একটি নতুন সরঞ্জাম দেয়।


6
সেখানে একটি দম্পতি অপশন আছে --word-diff: color, plain, এবং porcelain। এছাড়াও, যে কোনও একটি দিয়ে শব্দের সীমানার জন্য রেজেক্স পরিবর্তন করতে পারে --word-diff-regex। ডিফল্ট হিসাবে প্রদর্শিত হবে \S+। ( v2.1.1 )
মাইকেল - ক্লে

3
--color-wordsশর্টহ্যান্ডের জন্য মনে হচ্ছে --word-diff=color, যখন আপনি কেবল ভিন্নতাটি দেখেন, ভাগ না করে রাখে তা দুর্দান্ত।
সিভিফ্যান

আহ, এটি আকর্ষণীয় এবং সম্ভাব্যভাবে খুব দরকারী। ভাগ করে নেওয়ার জন্য ধন্যবাদ!
দারাগ এরাাইট

1
আমি পৃথক লাইনে পরিবর্তনগুলি লাইন করব বলে তার --word-diff=porcelainচেয়ে ভাল আমার পছন্দ , যেখানে পরিবর্তনগুলি ইনলাইন রাখুন। পার্থক্যগুলি সূক্ষ্ম হলে পৃথক লাইনগুলি আপনাকে আরও সহজে পার্থক্যগুলি দেখতে দেয়। --word-diffporcelain--word-diff
উইসবাকি

1
ল্যাটেক্স ফাইলের জন্য জীবন বদলাচ্ছে!
6005

30

পেজার হিসাবে কম ব্যবহার করতে এবং লাইন মোড়কে স্থায়ী করতে আপনি কেবল ভাঁজ-দীর্ঘ-লাইন বিকল্প সক্ষম করতে পারবেন:

git config --global core.pager 'less -+S'

কম ব্যবহার করার সময় আপনাকে এগুলি টাইপ করতে হবে না।

চিয়ার্স


OS X 10.9.5 এ আমার জন্য কাজ করেছেন। ধন্যবাদ!
জে টেলর

একইভাবে, গিট ডিফ্সগুলি পড়ার সময় আপনি যদি লাইন মোড়কে অক্ষম করতে চান তবে সেটিংটি একইভাবে:git config --global core.pager 'less -S
টোফার হান্ট

19

শুধু এই এক আপ googled। GIT_PAGER='less -r'আমার জন্য কাজ কর


9
আরও ভাল (আমার জন্য): less -R(প্রকৃতপক্ষে, আমি ব্যবহার করি less -eiFRSXযা রঙ এবং লাইন-মোড়ানো সমস্যাগুলিকেও সমাধান করে))
cdunn2001

2
কম-আর-এর মতো হয় তবে কেবল এএনএসআই "রঙ" অব্যাহতি ক্রমগুলি "কাঁচা" আকারে আউটপুট থাকে। -R এর বিপরীতে, বেশিরভাগ ক্ষেত্রে পর্দার উপস্থিতি সঠিকভাবে বজায় থাকে। (লোক কম)
ধনী

19

ম্যাক ওএসএক্স: কারওর 45-'এস' ব্যতীত অন্য কোনও উত্তর আমার পক্ষে কম চলছে। শব্দ-মোড়কে অবিচ্ছিন্ন করতে নিম্নলিখিতগুলি গ্রহণ করেছে:

git config --global core.pager 'less -+$LESS -FRX'

এটি আমার পক্ষেও কাজ করেছিল তবে কেন তা বুঝতে পারছি না। -+$LESSপরামিতি কী করছে? গিট এটির সংজ্ঞা না দিলে আমার কম পরিবেশের পরিবর্তনশীলটি সেটও করা যায় না।
জাকার

3
@ জাকার: তাহলে তা কিছুই করে না। কিছু পরিবেশে, $LESSকিছু মান সেট করা হয় (যেমন একটি .loginবা একটি .profileবা কিছু দ্বারা), এবং এই বিকল্পটি, আমি মনে করি, কেবল ডিফল্ট যুক্ত করে, এবং তারপরে তার -FRXউপরে যুক্ত করে।
nnot101

এটি ওএস এক্স ম্যাভারিকসে আমার পক্ষে কাজ করে নি, $LESSএটি অপরিজ্ঞাত।
ডিলিথিয়ামম্যাট্রিক্স

নট 101 এটি সঠিক যে + - ESS কমতে কেবলমাত্র লগিন বা .প্রফাইলে (যদি থাকে) যা কিছু সেটিংস অন্তর্ভুক্ত রয়েছে। এটি আমার জন্য মাভেরিক্সে দুর্দান্ত কাজ করছে, তবে যদি সমস্যা হয় তবে আপনি এটি বাদ দিতে পারেন।
জন লেম্বারগার

11

গিট ০.৩.৩ ( সেপ্টেম্বর ২০০ ))

একটি --no-pagerবিকল্প উপলব্ধ করা হয়েছে।

git --no-pager diff

পেজার ব্যবহার করা থেকে গিটের পার্থক্য কীভাবে রোধ করব?

উদাহরণ

V2.1 দিয়ে শুরু করে মোড়ক ডিফল্ট

গিট v2.1 রিলিজ নোট


1
প্রকাশের নোট লিঙ্কটি আমাকে সাহায্য করেছে। গিট> 2 g এ (জি) উপর কী চলছে (সিগ্রি) তা জানতে চেয়েছিলেন
func0der

5

আট বছর পরে আমি /superuser/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff থেকে একটি উচ্চতর উত্তর খুঁজে পাই :

git config core.pager `fold -w 80 | less`

এখন আপনি ভাঁজগুলির মাধ্যমে গিট ডিফারেশনটি পাইপ করুন, প্রথমে, তারপরে কম: মোড়ানো, কম পৃষ্ঠ-উচ্চতা সঠিক, সিনট্যাক্স হাইলাইট করুন।


5

আপনি যখন "গিট ডিফ" ব্যবহার করছেন এবং এটি বেশ কয়েকটি পৃষ্ঠা দেখায় (আপনি পৃষ্ঠার শেষে ":" দেখুন) এই ক্ষেত্রে আপনি "-S" টাইপ করতে পারেন এবং এন্টার টিপুন S (এস মূলধন হওয়া উচিত)। এটি ফোল্ড লম্বা লাইনগুলিকে টগল করবে।


যেকোন সেটিংসে ঝামেলা করার চেয়ে এই উপায় সহজ
ছারভে

4

নূন এখন পর্যন্ত এটি দেখিয়েছেন। এটি মনে রাখা বেশ সহজ এবং গিট কনফিগারেশনে কোনও অতিরিক্ত কনফিগারেশন করার প্রয়োজন নেই

git diff --color | less -R

এখন পর্যন্ত এই পৃষ্ঠায় সমস্ত উত্তর সহজ। আমার পরিবেশ - ওরাকল লিনাক্স 7.6। git diff --color | less -FRছোট পরিবর্তনগুলির জন্য যখন স্ক্রোল করতে হবে না
রাকেশ এন

3

আপনি আরও সহজে গিটের আউটপুট পাইপ করতে পারেন:

git diff | more

3

একটি নিখুঁত সমাধান নয়, gitkএবং এবং git-guiউভয়ই এই তথ্য প্রদর্শন করতে পারে এবং এতে স্ক্রোলবার রয়েছে।


1

বর্তমান / ডিফল্ট কনফিগারেশন তালিকা:

  $ git config --global core.pager  
    less -FXRS -x2

তারপরে আপডেট করুন এবং পছন্দগুলি ছেড়ে দিন:

  $ git config --global core.pager 'less -FXR -x2'

-এস: পর্দার প্রস্থের চেয়ে বেশি লম্বাগুলি ভাঁজ করার পরিবর্তে কাটা হতে পারে।


-1

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

যদিও আমি এটি ব্যবহার করতে গিটটি কনফিগার করতে সক্ষম হইনি। তাই প্রথমে ফাইলের উভয় সংস্করণ পেতে আমাকে ঘুরতে হবে।

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