কীভাবে গিট লগ চালিয়ে যাওয়ার অনুরোধ করবেন না?


93

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

> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)

এটি বরং অসুবিধাজনক কারণ আমাকে কয়েকবার q টিপতে হবে , আমি কেবলমাত্র একবারে এই সমস্ত অনলাইনারকে দেখতে চাই।

আমি কীভাবে এই আচরণটি অক্ষম করতে পারি (পছন্দমত এই লগ ফর্ম্যাটটি রাখার সময়)?


উত্তর:


155

গিটারের পেজারটি নিষ্ক্রিয় করার বিকল্প রয়েছে:

git --no-pager log --decorate=short --pretty=oneline -n1

যদি আপনার পেজার লাইনগুলি কেটে দেয় এবং আপনি যদি সেই আচরণটি ধরে রাখতে চান তবে হয় পাইপ cut...

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS

... অথবা GIT_PAGERঅনুরোধের আগে পরিবেশ পরিবর্তনশীল সেট করুন :

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1

--no-pagerযখন প্রয়োজন হয় তখন এই বিকল্পের শর্টকাটে ডিফল্ট বা আরও ভাল করার কোনও উপায় আছে ? আমি এলিয়াস gitnpকরার কথা ভেবেছিলাম git --no-pager, তবে আমি মনে করি এর থেকে আরও ভাল সমাধান আছে।
ইসলাম আজাব

4
@ ইস্লামআজাব, আপনি এমন উলামা করতে gitপারেন /usr/bin/git --no-pagerযা আপনার সমস্ত গিট কলের জন্য পেজার অক্ষম করে।
এমআরকেএমজি

4
@ ওয়ারেনপি পেজারে gitনির্মিত হয়নি। পরিবর্তে, এটি ইউনিক্স দর্শনের অনুসরণ করে এবং আপনার যা আছে তা ব্যবহার করে $PAGERgitকেবলমাত্র $PAGERঅন্যান্য অনেক দুর্বল লিখিত সরঞ্জামগুলির তুলনায় কেবল এলোমেলোভাবে এর পরিবর্তে সর্বদা ব্যবহার করে। একমাত্র যাদুটি gitহ'ল যদি $LESSএটি সংজ্ঞায়িত না হয় তবে এটি $LESSমানকে সংজ্ঞায়িত করবে FRX। আরও বিশদ জানতে github.com/git/git/blob/master/Docamentation/config.txt#L766 ঘুরে দেখুন ।
মিক্কো রেন্টালাইনেন

@ ওয়ারেনপি gitকেবল একটি ওভাররাইড সরবরাহ করে GIT_PAGER যা আপনাকে PAGERযখনই গিটের পেজিংয়ের প্রয়োজন হয় তার পরিবর্তে কাস্টম মানটি ব্যবহার করার জন্য সংজ্ঞা দেয় ।
মিক্কো রেন্টালাইনেন

4
সবচেয়ে সহজ কেস যা কেবল গিটের জন্য আচরণকে স্থির করে: GIT_PAGER = বিড়াল রপ্তানি করুন
স্ট্রাগুলাস

17

সাবকম্যান্ড ব্যবহার করার সময় বিশেষত পেজারকে স্থায়ীভাবে অক্ষম করার সমস্যার আরেকটি সমাধান log:

  • কেবলমাত্র বর্তমান রেপোর জন্য:
    git config pager.log false

  • আপনার গিট ইনস্টলেশন জন্য (যেমন আপনার মেশিনে সমস্ত রেপো):
    git config --global pager.log false

আপনি অনুমান করতে পারেন, পেজারটি যদি অন্য কয়েকটি সাবকম্যান্ডের বাছাইভাবে চালু বা বন্ধ করার প্রয়োজন হয় তবে একই কাজ করে
E. g। জন্য branch(যা শাখা ছাপে) subcommand এটা হবে

git config pager.branch false


প্রস্তাবিত সমাধানটির সাথে তুলনামূলকভাবে আরও মার্জিত

  • git --no-pagerপ্রতিটি সময় আপনি নির্দিষ্ট কমান্ড চালানো ব্যবহার ।
    কারণ, বেশ সম্ভব, আপনি এটি প্রতিবার টাইপ করতে চান না।

  • git --no-pagerএকটি উপাধি হিসাবে নির্দিষ্ট করা git
    কারণ, বেশ সম্ভব, আপনি অন্তর্নিহিত গ্লোবাল কনফিগারেশন এড়াতে চান বা আপনি পেজারকে কিছু ক্ষেত্রে সক্ষম করতে চান ।

  • মত কিছু বিভিন্ন পরিবেশের উপর নির্ভর PAGERবা GIT_PAGER
    এটি করার জন্য, আপনাকে অবশ্যই এটি আপনার বর্তমান টার্মিনাল সেশনে সেট করা আছে তা নিশ্চিত করতে হবে। এবং, আপনি যদি এগুলি প্রতিবার আপনার নতুন টার্মিনালটি তৈরি হওয়ার পরে স্বয়ংক্রিয়ভাবে কিছু কাস্টম মান হিসাবে সেট করতে চান তবে আপনাকে যেমন শেল-বুটস্ট্র্যাপযুক্ত ফাইলগুলির মধ্যে একটি পরিবর্তন করতে হবে ~/.bashrc। এটি কোনও বড় সমস্যা নয়। তবে এই বুটস্ট্র্যাপযুক্ত ফাইলগুলি ঘন ঘন অন্যান্য অ্যাপ্লিকেশন দ্বারাও পরিবর্তিত হয় এবং কেবল গিট ব্যবহার করে না এমন অন্যান্য স্টাফের গুচ্ছ থাকে। সুতরাং, তাত্ত্বিকভাবে, git configউদাহরণস্বরূপ না রাখার চেয়ে গিট-সম্পর্কিত সেটিংস ব্যবহার করে নির্দিষ্ট করা ভাল ~/.bashrc


অক্ষম করার বিকল্প সমাধান pagerজন্য সব subcommands নির্দিষ্ট করতে হয় catইউটিলিটি Git পেজিং জন্য ব্যবহার করবে হিসাবে:

  • git config core.pager cat বা
  • git config --global core.pager cat

আমার উত্তরটি নীচের একটিটির কিছুটা পুনরায় চাপ দিচ্ছে:
"পেজার ব্যবহার করা গিটকে আলাদা করা থেকে বিরত করবেন?"
https://stackoverflow.com/a/6986231/6103242

এটি অন্য প্রাসঙ্গিক আলোচনার বিষয়টি উল্লেখ করার জন্য উল্লেখ করা হয়েছে।



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