git - গিট শাখা কমান্ড 'কম' এর মতো আচরণ করে




terminal zsh (6)

আমি যখন সমস্ত শাখার তালিকাতে git branch কমান্ড ব্যবহার করি তখন আমি git branch আউটপুট দেখতে পাই git branch | less git branch | less

কমান্ড git branch শাখাগুলির একটি তালিকা প্রদর্শন করার কথা, যেমন ফাইলগুলির জন্য ls করে।

এটি আমি প্রাপ্ত আউটপুট:

আমি কীভাবে git branch ডিফল্ট আচরণ করব? পেজড আউটপুটটির কারণ কী?

আমি oh_my_zsh (সেখানে গিটের জন্য কিছুই নেই) দিয়ে oh_my_zsh ব্যবহার করছি, এবং আমার .gitconfig দেখতে এমন দেখাচ্ছে:

[user]
  email = [email protected]
  name = Dennis Haegler
[push]
  default = simple
[merge]
   tool = vimdiff
[core]
  editor = nvim
  excludesfile = /Users/dennish/.gitignore_global
[color]
  ui = true
[alias]
  br = branch
  ci = commit -v
  cam = commit -am
  co = checkout
  df = diff
  st = status
  sa = stash
  mt = mergetool
  cp = cherry-pick
  pl = pull --rebase
[difftool "sourcetree"]
  cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
  cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh 
  \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
  trustExitCode = true

গিট শাখা কমান্ড 'কম' এর মতো আচরণ করে

কারণ ডিফল্টরূপে গিট পেজারে আউটপুট খোলায় (কমপক্ষে উবুন্টুতে) স্বীকৃত উত্তরটি পুরোপুরি পেজারকে প্রতিস্থাপন করবে, যা আপনার আউটপুট খুব দীর্ঘ কিনা তা আপনি পছন্দ করতে পারেন না

আমি পেজারকে less দিয়ে প্রতিস্থাপন করার পরামর্শ দেব যাতে এটি টার্মিনালের উচ্চতার চেয়ে কম "আউট স্ক্রোল" না করে।

git config --global --replace-all core.pager "less -F -X"


অন্যান্য উত্তরের হিসাবে উল্লেখ করা হয়েছে, গিট বেশিরভাগ কমান্ডের জন্য পেজারে নিজেকে ডিপাইটিং করতে ডিফল্ট হয় (ডিফল্টরূপে less )।

যদিও একটি গুরুত্বপূর্ণ বিষয়টি হ'ল যখন কম পরিবেশের পরিবর্তনশীলটি সেট না করা হয়, তখন গিট এফআরএক্স-তে সেট করে এবং ফলাফলটি হ'ল কমান্ডের আউটপুট সংক্ষিপ্ত হওয়ার সময় পেজার ব্যবহার করা হয়নি এমনই ব্যবহারকারীর দৃশ্যমান আচরণটি হয় (যেমন আপনার যদি কেবল কয়েকটি শাখা থাকে)। মানুষকে কম দেখুন:

-F বা --quit-if- এক-স্ক্রিন
পুরো ফাইলটি প্রথম স্ক্রিনে প্রদর্শিত হতে পারলে স্বয়ংক্রিয়ভাবে প্রস্থান করার কারণ কম।

-আর বা - আরআরএ-কন্ট্রোল-চারস
[...] এএনএসআই "রঙ" অব্যাহতি ক্রমগুলি "কাঁচা" আকারে আউটপুট।

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

আপনি বর্ণিত আচরণটি যদি আপনি পেয়ে থাকেন তবে আপনার সম্ভবত সম্ভবত something অন্য কোনও কিছুর জন্য $LESS সেট আপ হয়েছে, এবং আনসেট না করা দীর্ঘ আউটপুটটির জন্য "পেজার" আচরণ রাখার সময় সমস্যা থেকে মুক্তি পাবে। বিকল্পভাবে, আপনি আপনার .gitconfig ফাইলে এটি যোগ করে $LESS হিসাবে রাখার জন্য আচরণটি সক্রিয় করতে পারেন:

[core]
    pager = less -FRX

আপনি যদি পেজার জিনিসটি সত্যিই অপছন্দ করেন তবে আপনি বিশ্বব্যাপী বা প্রতি-আদেশের ভিত্তিতে এটি নিষ্ক্রিয় করতে পারেন (অন্যান্য উত্তর দেখুন)।


এই গিট আচরণটি আমার জন্য আরও বেশি বিরক্তিকর ছিল। উদাহরণস্বরূপ কেবলমাত্র ট্যাগ তালিকা করতে চাইলে আমি আমার ট্যাগের তালিকাটি less পেয়েছিলাম।

ডিফল্ট গিট পেজারকে less পরিবর্তে cat পরিবর্তন করেও কেউ এই আচরণ নিয়ন্ত্রণ করতে পারেন। আমি বরং সম্পাদকের চেয়ে আইটার্মে স্ক্রোল করব আমি চাইলে সম্পাদকটি ব্যবহার করতে চাই।

তাই:

git config --global core.pager cat

আমি আসা করি এটা সাহায্য করবে.


এটি ঠিক করার জন্য যারা তাদের ~/.gitconfig আপডেট করতে চান তাদের জন্য এটি দেখতে এই রকম হবে:

[pager]
   branch = false

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

আপনি --no-pager বিকল্পটি ব্যবহার করে এই ডিফল্টটিকে ওভাররাইড করতে পারেন

git --no-pager branch

অথবা আপনি যদি আউটপুটটিকে কোনও ফাইলে পুনর্নির্দেশ করেন তবে গিটকে সনাক্ত করতে হবে যে এটি কোনও টার্মিনালে লিখছে না এবং তাই কোনওভাবে পেজার ব্যবহার করা উচিত নয়। (অন্যদিকে, এটি স্ক্রিপ্টিং ব্যবহারের ক্ষেত্রে প্রস্তাব দেয়, এই ক্ষেত্রে git for-each-ref অগ্রাধিকার হিসাবে git for-each-ref মতো git for-each-ref কমান্ড ব্যবহার করা উচিত))


https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

GIT_PAGER কমান্ড লাইনে মাল্টি-পেজ আউটপুট প্রদর্শন করতে ব্যবহৃত প্রোগ্রামটি নিয়ন্ত্রণ করে। যদি এটি সেট না করা থাকে তবে PAGER ফ্যালব্যাক হিসাবে ব্যবহৃত হবে।

আপনার সমস্যা সমাধানের জন্য, আপনি নিজের শেলটিতে PAGER এবং GIT_PAGER আনসেট করতে পারেন।






oh-my-zsh