আমার যখন ভিন্নতা আছে, আমি কীভাবে এটি রঙিন করব যাতে এটি দেখতে ভাল লাগে? আমি এটি কমান্ড লাইনের জন্য চাই, সুতরাং দয়া করে কোনও জিইউআই সমাধান করবেন না।
আমার যখন ভিন্নতা আছে, আমি কীভাবে এটি রঙিন করব যাতে এটি দেখতে ভাল লাগে? আমি এটি কমান্ড লাইনের জন্য চাই, সুতরাং দয়া করে কোনও জিইউআই সমাধান করবেন না।
উত্তর:
ম্যান পেজগুলি diff
নিজের থেকে রঙিনকরণের জন্য কোনও সমাধানের পরামর্শ দেয় না। ব্যবহার বিবেচনা করুন colordiff
। এটি চারপাশে একটি মোড়ক diff
যা ভিন্ন হিসাবে একই আউটপুট উত্পাদন করে, বাদে এটি পাঠযোগ্যতা বাড়ানোর জন্য রঙিন সিনট্যাক্স হাইলাইট ব্যবহার করে আউটপুটকে বাড়িয়ে তোলে:
diff old new | colordiff
বা শুধু:
colordiff old new
স্থাপন:
sudo apt-get install colordiff
brew install colordiff
বাport install colordiff
less -R
করে এটি কম পাইপ করা যেতে পারে যা সঠিকভাবে রঙগুলির জন্য পালানোর ক্রমগুলি প্রদর্শন করে।
-y
সক্ষম করার বিকল্প) এর জন্য কাজ করে না ☹ vimdiff
নীচের পরামর্শটি সম্ভবত আরও ভালতর উপায়
colordiff
জন্য ভাল কাজ করে svn diff | colordiff
(অর্থাত পরিস্থিতিতে যেখানে আপনি শুধুমাত্র পরিবর্তন আছে, diffed হচ্ছে না দুই ফাইল)।
-y
) সমর্থনও অন্তর্ভুক্ত।
ভিম ব্যবহার করুন :
diff /path/to/a /path/to/b | vim -R -
বা আরও ভাল এখনও, VimDiff (বা vim -d
, যা টাইপ করা সংক্ষিপ্ত) পাশাপাশি পাশাপাশি দুটি, তিন বা চারটি ফাইলের মধ্যে পার্থক্য দেখায়।
vim -d /path/to/[ab]
vimdiff file1 file2 file3 file4
zsh
? আমি =(...)
কনস্ট্রাক্টকে চিনতে পারি না । দ্বিতীয়ত, আমার মনে ছিল diff -ur a b
।
=(...)
প্রকৃতপক্ষে আরও একটি বিকল্প রয়েছে বলে মনে হচ্ছে (যা আমি সম্প্রতি দেখলাম, যখন উপরে বর্ণিত সমস্যাটিতে দৌড়ানোর সময়):
git diff --no-index <file1> <file2>
# output to console instead of opening a pager
git --no-pager diff --no-index <file1> <file2>
যদি আপনার চারপাশে গিট থাকে (যা আপনি ইতিমধ্যে যেভাবেই ব্যবহার করতে পারেন), তবে ফাইলগুলি সংস্করণ নিয়ন্ত্রণে না থাকলেও আপনি তুলনার জন্য এটি ব্যবহার করতে সক্ষম হবেন। যদি আপনার জন্য ডিফল্টরূপে সক্ষম না করা হয় তবে রঙ বর্ণটি এখানে সক্ষম করা পূর্বে উল্লিখিত কিছু কাজের ক্ষেত্রের তুলনায় যথেষ্ট সহজ বলে মনে হচ্ছে।
git diff <(xxd file1) <(xxd filed)
কাজ করে না।
git help diff
। সুতরাং যদি আপনার গিটের পার্থক্য খালি আসছে, cd
আপনি কোথায় আছেন তা চেষ্টা করে দেখুন।
git config color.diff auto
git diff --no-index
দুটি ফাইলের তুলনা করতে ব্যবহার করুন।
diff --color
বিকল্পটি জিএনইউ ডিফিউটিস 3.4 (2016-08-08) এ যুক্ত হয়েছিল
এটি diff
বেশিরভাগ ডিস্ট্রোজে ডিফল্ট রূপায়ণ, যা শীঘ্রই এটি পেয়ে যাবে।
উবুন্টু 18.04 এর diffutils
3.6 রয়েছে এবং তাই এটি রয়েছে।
3.5 এ এটির মতো দেখাচ্ছে:
পরিক্ষিত:
diff --color -u \
<(seq 6 | sed 's/$/ a/') \
<(seq 8 | grep -Ev '^(2|3)$' | sed 's/$/ a/')
দৃশ্যত কমিট c0fa19fe92da71404f809aafb5f51cfd99b1bee2 (মার্চ 2015) এ যুক্ত হয়েছে।
শব্দ-স্তরের পার্থক্য
লাইক diff-highlight
। সম্ভব বলে মনে হচ্ছে না, বৈশিষ্ট্যটির অনুরোধ: https://lists.gnu.org/archive/html/diffutils-devel/2017-01/msg00001.html
সম্পর্কিত থ্রেড:
ydiff
এটি যদিও, নীচে দেখুন।
ydiff
পাশাপাশি স্তরের শব্দের স্তর পৃথক
https://github.com/ymattw/ydiff
এ কি নির্বান?
python3 -m pip install --user ydiff
diff -u a b | ydiff -s
ফলাফল:
লাইনগুলি খুব সংকীর্ণ হলে (ডিফল্ট 80 কলাম), এর সাথে স্ক্রিনে ফিট করুন:
diff -u a b | ydiff -w 0 -s
পরীক্ষার ফাইলগুলির বিষয়বস্তু:
একটি
1
2
3
4
5 the original line the original line the original line the original line
6
7
8
9
10
11
12
13
14
15 the original line the original line the original line the original line
16
17
18
19
20
খ
1
2
3
4
5 the original line teh original line the original line the original line
6
7
8
9
10
11
12
13
14
15 the original line the original line the original line the origlnal line
16
17
18
19
20
ydiff
গিট সংহত
ydiff
কোনও কনফিগারেশন প্রয়োজন ছাড়াই গিটের সাথে সংহত করে।
গিট সংগ্রহস্থলের ভিতরে থেকে পরিবর্তে git diff
, আপনি কেবলমাত্র করতে পারেন:
ydiff -s
এবং পরিবর্তে git log
:
ydiff -ls
আরও দেখুন: আমি যখন "গিট ডিফ" করি তখন আমি কীভাবে পাশাপাশি পার্থক্য পেতে পারি?
উবুন্টু 16.04, গিট 2.18.0, ydiff 1.1 এ পরীক্ষিত।
There is no word-highlighting, yet
- কোনও আপডেট? এটিই আমি এই প্রশ্নের জন্য এসেছি (আমি grep --color
-র মতো-ভিন্ন ভিন্ন আউটপুট চাই)।
git diff --color
কাজ করে। Ssh ওভার কাজ করার সময় দরকারী।
diff --color=always | less -R
এবং এইসব পরিস্থিতিতে যখন আপনার তাত্ক্ষণিক নিয়ন্ত্রণের বাইরে কিছু উন্মত্ত বাধা থাকার কারণে যখন কোনও yum install colordiff
বা কোনও apt-get install colordiff
বিকল্প না হয় বা আপনি কেবল উন্মাদ বোধ করেন তখন আপনি সেডের লাইনের সাহায্যে চাকাটি পুনরায় উদ্ভাবন করতে পারেন:
sed 's/^-/\x1b[41m-/;s/^+/\x1b[42m+/;s/^@/\x1b[34m@/;s/$/\x1b[0m/'
এটি একটি শেল স্ক্রিপ্টে নিক্ষেপ করুন এবং এটির মাধ্যমে পাইপ ইউনিফাইড ডিফার্ট আউটপুট।
এটি কুঁচকে চিহ্নিতকারীগুলিকে নীল করে তোলে এবং যথাক্রমে সবুজ এবং লাল পটভূমিতে নতুন / পুরানো ফাইল নাম এবং যুক্ত / সরানো রেখাগুলি হাইলাইট করে। 1 এবং এটি কালারডিফের চেয়ে আরও সহজেই স্পষ্টভাবে স্থান পরিবর্তনযোগ্য 2 টি পরিবর্তন করবে ।
1 ঘটনাচক্রে, ফাইলের নামগুলি পরিবর্তিত লাইনের সমান হাইলাইট করার কারণ হ'ল ফাইলের নামগুলি এবং পরিবর্তিত রেখাগুলির মধ্যে সঠিকভাবে পার্থক্য করার জন্য পৃথক ফর্ম্যাটটি সঠিকভাবে পার্স করা দরকার, যা একটি রেজিক্সের সাথে মোকাবেলা করার মতো কিছু নয়। তাদের একই কাজ হ'ল দর্শনীয়ভাবে "যথেষ্ট যথেষ্ট" এবং সমস্যাটিকে তুচ্ছ করে তোলে। বলেছিল, কিছু আকর্ষণীয় সূক্ষ্মতা রয়েছে ।
2 তবে পিছনে থাকা ট্যাবগুলি নয়। দৃশ্যত ট্যাবগুলি কমপক্ষে আমার এক্সটারেমে তাদের পটভূমি সেট পান না। এটি ট্যাব বনাম স্থান পরিবর্তনগুলি কিছুটা হলেও আলাদা করে তোলে।
sed "s/^-/`echo -e \"\x1b\"`[41m-/;s/^+/`echo -e \"\x1b\"`[42m+/;s/^@/`echo -e \"\x1b\"`[34m@/;s/$/`echo -e \"\x1b\"`[0m/"
(যদিও আমি আশা করি এর থেকে আরও ভাল উপায় আছে)।
কলর্ডিফ ব্যবহারের জন্য আপনি সাবভারশন কনফিগারেশনটি পরিবর্তন করতে পারেন
~ / .Subversion / config.diff
### Set diff-cmd to the absolute path of your 'diff' program.
### This will override the compile-time default, which is to use
### Subversion's internal diff implementation.
-# diff-cmd = diff_program (diff, gdiff, etc.)
+diff-cmd = colordiff
এর মাধ্যমে: https://gist.github.com/westonruter/846524
রঙিন, শব্দ-স্তরের diff
আউটপুট
আপনি নীচের স্ক্রিপ্ট এবং আলাদা-হাইলাইট দিয়ে কি করতে পারেন তা এখানে :
#!/bin/sh -eu
# Use diff-highlight to show word-level differences
diff -U3 --minimal "$@" |
sed 's/^-/\x1b[1;31m-/;s/^+/\x1b[1;32m+/;s/^@/\x1b[1;34m@/;s/$/\x1b[0m/' |
diff-highlight
(ক্রেডিট @ retracile এর উত্তর জন্য sed
হাইলাইট)
আমি grc
(জেনেরিক কলরিজার) ব্যবহার করি যা আপনাকে বেশ কয়েকটি কমান্ডের আউটপুট সহ রঙিন করতে দেয় diff
।
এটি একটি অজগর স্ক্রিপ্ট যা কোনও কমান্ডের চারপাশে মোড়ানো যায়। সুতরাং অনুরোধ করার পরিবর্তে diff file1 file2
, আপনি grc diff file1 file2
রঙিন আউটপুট দেখতে অনুরোধ করবেন । আমি ওরফে আছে diff
করতে grc diff
এটা সহজ করতে।
fork()
কলগুলির কারণে উইন্ডোজটিতে মিংডাব্লু / সাইগউইন নিয়ে কাজ করে না , যদিও ডাব্লুএসএল-এর সাথে কাজ করার সম্ভাবনা রয়েছে।
এখানে আরেকটি সমাধান পূজা হয় sed
রং দেখানো হবে তার জন্য উপযুক্ত ANSI পালাবার ক্রম সন্নিবেশ করতে +
, -
এবং @
, লাল, সবুজ ও সায়ান মধ্যে লাইন যথাক্রমে।
diff -u old new | sed "s/^-/$(tput setaf 1)&/; s/^+/$(tput setaf 2)&/; s/^@/$(tput setaf 6)&/; s/$/$(tput sgr0)/"
এই প্রশ্নের অন্যান্য সমাধানগুলির থেকে পৃথক, এই সমাধানটি এএনএসআই অব্যাহতি সিকোয়েন্সগুলি স্পষ্টভাবে বানান করে না। পরিবর্তে, এটি যথাযথ রঙ নির্ধারণ করতে এবং যথাক্রমে টার্মিনাল বৈশিষ্ট্যগুলি পুনরায় সেট করার জন্য এএনএসআই অব্যাহতি সিকোয়েনস উত্পন্ন করার জন্য আদেশগুলি tput setaf
এবং tput sgr0
আদেশগুলি আহ্বান করে ।
প্রতিটি আর্গুমেন্টের জন্য উপলব্ধ রঙগুলি দেখতে tput setaf
, এই আদেশটি ব্যবহার করুন:
for i in {0..255}; do tput setaf $i; printf %4d $i; done; tput sgr0; echo
আউটপুটটি কেমন দেখাচ্ছে তা এখানে:
এখানে প্রমাণ হয় tput setaf
এবং tput sgr0
কমান্ড উপযুক্ত ANSI পালাবার ক্রম উৎপন্ন:
$ tput setaf 1 | xxd -g1
00000000: 1b 5b 33 31 6d .[31m
$ tput setaf 2 | xxd -g1
00000000: 1b 5b 33 32 6d .[32m
$ tput setaf 6 | xxd -g1
00000000: 1b 5b 33 36 6d .[36m
$ tput sgr0 | xxd -g1
00000000: 1b 28 42 1b 5b 6d .(B.[m
যেহেতু wdiff
উভয় সন্নিবেশ এবং মুছে ফেলার শুরু এবং শেষে স্ট্রিং নির্দিষ্ট করে দেওয়া আরগগুলি গ্রহণ করে, আপনি এএনএসআই রঙের ক্রমগুলি সেই স্ট্রিং হিসাবে ব্যবহার করতে পারেন:
wdiff -n -w $'\033[30;41m' -x $'\033[0m' -y $'\033[30;42m' -z $'\033[0m' file1 file2
উদাহরণস্বরূপ, এটি দুটি সিএসভি ফাইলের তুলনা করার আউটপুট:
Https://www.gnu.org/software/wdiff/manual/html_node/wdiff-Ees উদাহরণ.html থেকে উদাহরণ
colordiff
NOW (1.0.16) বুঝতে পারে wdiff
, তোমরাও তেমনি শুধু পাইপ যা করতে পারেন: wdiff -n f1 f2 | colordiff
। wdiff
ডিফিউটিলেটগুলিতে একীভূত করা উচিত ...
আমি আপনাকে আলাদা চেষ্টা করার পরামর্শ দিচ্ছি । আমি আমার কাজের সময় এটি ব্যবহার করি এবং এটি এখন পর্যন্ত দুর্দান্ত মনে হয়েছে। এটি অনেকগুলি বিকল্পের সাহায্যে আসে এবং আপনার ডিফগুলি আপনার পছন্দ মতো কনফিগার করা সত্যই সহজ।
আপনি এটি দ্বারা এটি ইনস্টল করতে পারেন:
sudo npm install -g diff-so-fancy
বা ম্যাকে:
brew install diff-so-fancy
এরপরে, আপনি আপনার মতভেদগুলি হাইলাইট করতে পারেন:
diff -u file1 file2 | diff-so-fancy
সঙ্গে ব্যাট কমান্ড প্রয়োগ করুন:
diff file1 file2 | bat -l diff
উবুন্টুতে গিটের সাম্প্রতিক সংস্করণগুলিতে আপনি এর সাথে আলাদা-হাইলাইটিং সক্ষম করতে পারবেন:
sudo ln -s /usr/share/doc/git/contrib/diff-highlight/diff-highlight /usr/local/bin
sudo chmod a+x /usr/share/doc/git/contrib/diff-highlight/diff-highlight
এবং তারপরে এটি আপনার যুক্ত করুন .gitconfig
:
[pager]
log = diff-highlight | less
show = diff-highlight | less
diff = diff-highlight | less
স্ক্রিপ্টটি অন্য ডিস্ট্রোজের অন্য কোথাও অবস্থিত locate diff-highlight
এটি আপনি কোথায় তা খুঁজে পেতে ব্যবহার করতে পারেন ।