গিট-লগে রঙ


106

আপনি যখন চালান git log --decorate --pretty=onelineআউটপুট (HEAD, refs/published/master, master)রঙিন মত এন্ট্রি থাকবে ।

আমার গিটকনফিগে আমারও নিম্নলিখিত রয়েছে:

[color "branch"]
    current = yellow reverse
    local = yellow
    remote = green

নিম্নলিখিতগুলির মতো কাস্টম ফর্ম্যাট করার সময় আপনি কীভাবে এই রঙগুলি প্রতিলিপি করবেন?

git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"

উত্তর:


91

গিট 1.8.3 (মে 24, 2013) হিসাবে, আপনি বিন্যাসের স্ট্রিংয়ে %C(auto)সাজানোর জন্য ব্যবহার করতে পারেন ।%dgit log

থেকে রিলিজ নোট :

 * "git log --format" specifier learned %C(auto) token that tells Git
   to use color when interpolating %d (decoration), %h (short commit
   object name), etc. for terminal output.)

60

git log --decorateডিফল্টরূপে করা হবে:

  • সায়ান মধ্যে মাথা
  • লাল মধ্যে দূরবর্তী শাখা
  • সবুজ ট্যাগ

এবং color.decorateকনফিগার মাধ্যমে পরিবর্তন করা যেতে পারে ।

তবে এটি git log --formatনির্দিষ্টভাবে HEAD বা রিমোটগুলি বা শাখাটি প্রদর্শন করার কোনও উপায় অফার করে না : তিনটিই %dসম্ভব একটি রঙের মাধ্যমে প্রদর্শিত হয় ।


আপডেট করতে পারে 2013, যেমন নিচে উল্লিখিত দ্বারা Elad শাহার (upvoted), 1.8.3 অফার আরও একটি বিকল্প Git:

git log –formatএখন একটি %C(auto)টোকেন স্পোর্ট করে যা গিটকে টার্মিনাল আউটপুটটির জন্য সমাধান %d(সাজসজ্জা), %h(সংক্ষিপ্ত কমিট অবজেক্টের নাম) ইত্যাদির সময় রঙ ব্যবহার করতে বলে ।

এই অ্যাটলিশিয়ান ব্লগ মন্তব্য করেছে যে এই বৈশিষ্ট্যটি ফর্ম্যাট ( git rebase, git count-objects) এবং রঙগুলিতে ( git branch -vv) উপর দৃষ্টি নিবদ্ধ করা অন্য কয়েকজনের অংশ

এটি পূর্ববর্তী auto,reset1.8.2 এর সাথে যুক্ত হয়েছে , যা টার্মিনাল 1 এর জন্য আউটপুট ব্যবহার না করা হলে স্বয়ংক্রিয়ভাবে রঙগুলি অক্ষম করে

%C(auto,blue)Hello%C(auto,reset)

দ্রষ্টব্য: গিট 2.4+ (কিউ 2 2015) শাখার নামগুলিতে রঙ পুনরায় সেট করার জন্য আরও ভাল কাজ করবে। জুনিও সি হামানো ( ) দ্বারা প্রতিশ্রুতিবদ্ধ 5ee8758
দেখুন :gitster

log --decorate: পরবর্তী আইটেমটিতে "প্রতিশ্রুতিবদ্ধ" রঙ ফাঁস করবেন না

" git log --decorate" তে, আপনি কমিটের শিরোনামটি দেখতে পাবেন:

commit ... (HEAD, jc/decorate-leaky-separator-color)

যেখানে " commit ... (" আঁকা হয় color.diff.commit, " HEAD" ইন color.decorate.head, " ," ইন color.diff.commit, শাখার নামটি ইন color.decorate.branchএবং তারপরে " )" বন্ধ করে দেওয়া হয় color.diff.commit

যদি আপনি শিরোনাম এবং স্থানীয় শাখার নাম বডি টেক্সটের মতো একই রঙে আঁকতে চেয়েছিলেন (সম্ভবত সায়ান এবং সবুজ একটি কালো-পরে-সাদা টার্মিনালে পড়তে পারা যায় না) তবে আপনাকে বলতে হবে না

[color "decorate"]
    head = black
    branch = black

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

[color "decorate"]
    head = normal
branch = normal

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


নোট করুন যে গিট 2.5 (কিউ 2 2015) একটি বাগ সংশোধন করে:

দেখুন 429ad20 কমিট দ্বারা junio সি Hamano ( gitster) , 13 মে 2015.
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট fd70780 , 22 মে 2015)

log: খুব তাড়াতাড়ি সাজসজ্জার নামগুলি ছোট করবেন না

" log --decorate" গিট ২.৪-এর বর্ধন যা বর্তমান শাখার ডগায় প্রতিশ্রুতি দেখায় যেমন " HEAD -> master" "--decorate = পূর্ণ দিয়ে কাজ করে নি।


Git 2.9.x + + (চতুর্থাংশ 3 2016) অন্য বাগ এবং ঠিক করবে সম্মান color=autoজন্য%C(auto)


গিট 2.10.2 (অক্টোবর 2016) কমেন্ট 82b83da (29 সেপ্টেম্বর 2016) এর সাথে অন্যান্য বাগগুলি ঠিক করে এবং রেনা শার্ফে (``) দ্বারা c99ad27 (17 সেপ্টেম্বর 2016) কমিট করে । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 76796d4 , 28 অক্টোবর 2016)
gitster

pretty: %C(auto)আউটপুট ফাঁকা থাকলে এর জন্য রিসেট যুক্ত করা এড়াবেন

রঙটি পুনরায় সেট করার জন্য আমরা একটি পালানোর ক্রম প্রেরণ করি এবং সুনির্দিষ্টভাবে %C(auto)স্বয়ংক্রিয় রঙটি রঙ হিসাবে প্রদর্শিত হয় তা নিশ্চিত করার জন্য বৈশিষ্ট্যটি ।
এটি করা বন্ধ করুন যদি আউটপুট strbuf খালি থাকে , অর্থাৎ %C(auto)ফর্ম্যাট স্ট্রিংয়ের শুরুতে প্রদর্শিত হয়, কারণ তখন পুনরায় সেট করার দরকার হয় না এবং আমরা আউটপুটে কয়েকটি বাইট সংরক্ষণ করি।

pretty: %C(auto)সমস্ত বৈশিষ্ট্য পুনরায় সেট করা যাক

রিসেট রং এবং বৈশিষ্ট্যাবলী উপর %C(auto)তাদের উপর আমার পূর্ণ স্বয়ংক্রিয় নিয়ন্ত্রণ সক্ষম করার জন্য; অন্যথায় গা bold় বা বিপরীত বৈশিষ্ট্যগুলি এখনও পূর্ববর্তী %Cস্থানধারীদের থেকে কার্যকর হতে পারে


3
--decorate এবং - ব্যাখ্যা = "... স্টাফ" ব্যবহার করার কোন উপায় নেই?
উত্তরআইএসইপি

8
@ উত্তরথলস: --decorateএটির নিজস্ব বাস্তবায়ন এবং কনফিগারেশন রয়েছে বলে মনে হয়, যখন একটি ব্লকের --prettyমাধ্যমে একই তথ্য সরবরাহ করা হয় %dযার অর্থ আপনার নিজের --prettyতুলনায় রঙিন কনফিগারেশনের সমান সূক্ষ্ম স্তর থাকতে পারে না --decorate
ভোনসি

আমি "গিট লগ" পরে "--decorate" যুক্ত করার পরে কেবলমাত্র তফাতটিই দেখি যে "রেফ / মাথা / ..." বা "রেফ / / রিমোটস ..." দিয়ে রেপোগুলি শুরু হয়। রঙগুলি উভয় উপায়ে দেখানো হয়। কোন ধারণা কি কারণ হতে পারে? আমার জিজ্ঞাসার কারণটি হ'ল আমার .gitconfig কোনও রঙের বৈশিষ্ট্য দেখায় না। আমি ভাবছি যে আমার "color.decorate" সম্পত্তিটি কোথায় পাব। আমি এটি আমার .gitconfig ফাইলে দেখতে পাচ্ছি না।
জে উডচাক

@ জে ওয়াডচাক চেষ্টা করুন git config --show-origin -l: আপনি আপনার সমস্ত কনফিগারেশন দেখতে পাবেন । তারপরে আপনি "রঙ" এর জন্য গ্রেপ করতে পারেন।
ভোনসি

হ্যাঁ, আমি রঙের জন্য গ্রেপ করার সময় কিছুই দেখায় না, যা সেটিংসটি এত রহস্যময় দেখাচ্ছে makes
জে উডচাক

9

তাদের প্যারেন্টেসাইজ করুন:

%C(...): color specification, as described in color.branch.* config option

সুতরাং %C(yellow reverse)কাজ করবে।


1
একেবারে নয়, %dসমস্ত শাখাগুলি যাতে এটি দেখতে সুন্দর (HEAD, master)হয়, এক্ষেত্রে মাথাটি নীল এবং মাস্টার সবুজ হওয়া উচিত (আমি বিশ্বাস করি সেগুলি ডিফল্ট রঙ)। যেখানে %C(yellow)%d%Cresetএটি সব একই রঙ করা হবে।
উত্তরআইএসপি

2
ওঁ, পৃথক সজ্জা রঙ করা। আমি মনে করি এটি অসম্ভব। লগ এন্ট্রি রেন্ডার কোড প্রয়োজনীয়ভাবে দুইবার প্রয়োগ করা হয়।
জোশ লি

1
এটা খুব খারাপ, তা সম্ভব না ... আমি কি করতে চাইgit log --decorate --oneline --date=...
mgalgs

8

কনফিগার বিকল্পটি log.decorateলগগুলিতে ডিফল্ট সজ্জা সক্ষম / অক্ষম করতে পারে।

git config --global log.decorate full

এটি হয়ে গেলে আপনি color.decorate.*রঙগুলি নিয়ে খেলতে পারেন


3
log.decorate=fullরেফের নামগুলি তাদের উপসর্গ ( refs/heads/, ইত্যাদি) দিয়ে মুদ্রিত করে ; আমি log.decorate=shortআরও দরকারী মনে করি।
মুসিফিল

1
খুব দরকারী সেটিং, যদিও আমি shortতার চেয়েও পছন্দ করিfull
টমাস লেভেস্ক

4

কেউ কেউ %C(colorname) এটি ব্যবহার করতে চাইতে পারেন: এর জন্য রঙের কনফিগারটি পরিবর্তন করার দরকার নেই।

উদাহরণ: লেখকের নাম হলুদ রঙ করা

--pretty=format:"%C(yellow)%an%Creset"

নিয়মিত এএনএসআই রঙগুলির https://en.wikedia.org/wiki/ANSI_escape_code কাজ করা উচিত

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