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


414

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

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

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

এখানে চিত্র বিবরণ লিখুন

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

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

[user]
  email = myemail@mail.com
  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

উত্তর:


736

মার্ক অ্যাডেলসবার্গারের উত্তরের মন্তব্যে যেমন উল্লেখ করা হয়েছে , এটি ছিল গিটার ২.১16-তে প্রবর্তিত একটি পূর্বনির্ধারিত আচরণ পরিবর্তন ।

আপনি কনফিগার সেটিংgit branch দিয়ে ডিফল্ট হিসাবে পেজযুক্ত আউটপুটটি বন্ধ করতে পারেন :pager.branch

git config --global pager.branch false

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

7
@ স্ট্রাগুলাস নোট করুন যে নতুন ডিফল্ট আপনাকে git branchঅন্য কোনও কিছুর সাথে শৃঙ্খলা থেকে বাধা দেয় না । পাইপ সনাক্তকরণ ব্যবহার করে গিট শাখা তালিকা আউটপুট করে কমান্ডের মধ্যে git branch > branches.txtবা স্ট্যান্ডআউটে যাবে git branch | wc -l
ররি ও'কেনে

3
@ ররিও'কেইন তবে পেজারের সাথে, আমার ESC/qসাধারণ git branchচেকের পরে আমার কাছে টাইপ অতিরিক্ত রয়েছে ।
mitnk

23
@mitnk অগত্যা নয়। যদি আপনার পেজার হয় less, আপনি --no-init --quit-if-one-screenআপনার LESSপরিবেশের পরিবর্তনশীলতে যুক্ত করতে পারেন , যা lessযদি স্ক্রলিং না করে পাঠ্যটি দেখা যায় তবে কেবল স্টডআউটেই লিখতে পারে। দেখুন man lessআরো বিস্তারিত জানার জন্য।
ররি ও'কেন

13
যদি আপনি এটি নিজের কনফিগারেশন ফাইলটিতে ম্যানুয়ালি যুক্ত করতে চান তবে এটি [pager] branch = false(দুটি লাইনে)।
স্যাম

56

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

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

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

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


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

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

[core]
    pager = less -FRX

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


40

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

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

git --no-pager branch

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


git --no-pager branchকাজ করে। তবে এই সেটটি কেমন? শুধুমাত্র PAGERপরিবেশ পরিবর্তনশীল সেট করা আছে less। এটি ডিফল্ট আচরণ নয়। টার্মিনালে মুদ্রিত তালিকা হিসাবে আমার সমস্ত কলেজের একটি আউটপুট রয়েছে।
ড্যানি জেনসেন

গিটের কোন সংস্করণ আপনি ব্যবহার করছেন? এবং আপনার সহকর্মী কোনটি ব্যবহার করছেন?
লাসে ভি কার্লসেন

2.16.0! এই সংস্করণে গিটারের জন্য এটি কি কোনও বৈশিষ্ট্য চালু করা হয়েছে?
ডেনি জেনসেন

হ্যাঁ এটি এখন ডিফল্ট। github.com/git/git/blob/master/Docamentation/RelNotes/… আমার পাশের কলেজটিও একই সংস্করণ ব্যবহার করে আমার কাছে এবং এই সমস্যাটি নেই: :) thx @mark
DenniJensen

1
এটি এখানে সর্বাধিক উচ্চতর উত্তর, দুঃখের বিষয় যে এটির কয়েকটি সংস্থান রয়েছে, কারণ আমি এই মাস্টারপিসটি খুঁজতে বেশ কিছুটা স্ক্রোল করেছি।
কোডপ্লেব

25

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

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

তাই:

git config --global core.pager cat

1
হ্যাঁ, এটি আমার পক্ষে একটি বৈধ উত্তর হওয়া উচিত
তুরা

2
সতর্ক থাকুন জন্য ধন্যবাদ. আমি কয়েক মাস ব্যবহারের পরে স্বীকার করেছি, আমি এখনও বিড়াল ব্যবহার করছি, তবে উদাহরণস্বরূপ git logএটি করা যখন বিরক্তিকর হয়। আমি কেবল আসল আচরণটি মিস করছি, তবে এই প্রেক্ষাপটে আমার প্রতিদিনের কাজের প্রবাহকে উন্নত করার জন্য সময় পাইনি।
ionescu77

তুমি জিতো ... ... পারফেক্ট!
sdlins

2
নোট করুন যে এটি এটির জন্যও প্রয়োগ করবে git log...
ব্যাগার্ড

10

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

[pager]
   branch = false

এখানে অদ্ভুত বিষয়: এই সেটিংটি কাজ করছে এবং কিছু দিন থেকে এটি আর নয়, কিছু পরিবর্তন হয়েছে বা আমার কনফিগারেশনটি কেবল প্রয়োগ হচ্ছে না?
বিজয়ী

7

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

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

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

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


2

গৃহীত উত্তরটি ভুল বলে মনে হচ্ছে। দুটি সমস্যা আছে:

  1. আচরণ (ডিফল্ট কনফিগার করা) ব্যাশ এবং zsh এর মধ্যে আসলে আলাদা। 'সমস্যা' কেবল zsh এর অধীনে প্রদর্শিত হবে।
  2. প্রস্তাবিত সমাধানটি git branchসর্বদা পেজার ব্যবহার করবে না, যখন প্রচুর আউটপুট থাকবে তখন পছন্দ হবে না।

আসল কারণটি হ'ল ল্যাশ সম্পর্কে বাশ এবং জেডের আলাদা আলাদা ডিফল্ট সংজ্ঞা রয়েছে: ব্যাশ কিছুই বোঝায় না, যখন zsh এটিকে সংজ্ঞায়িত করে -R। আমি যখন unset LESSzsh এ করি তখন সবকিছু স্বাভাবিক হয়ে যায় ...

-Rআচরণ এখনো কাঙ্ক্ষিত হতে পারে। সেক্ষেত্রে আপনার কাজকর্ম চালিয়ে যেতে আপনার .zshrc এ নিম্নলিখিত নির্দেশাবলী যুক্ত করতে পারেন:

export LESS=-FRX

-F'পুরো স্ক্রিনে যদি পুরো ফাইলটি প্রদর্শিত হতে পারে তবে' স্বয়ংক্রিয়ভাবে প্রস্থান করতে কম কারণ ঘটায় '। তবে -Xএকসাথে নির্দিষ্ট করা দরকার, অন্যথায় আউটপুট স্ক্রিনফুলের চেয়ে কম থাকলে কোনও আউটপুট প্রদর্শিত হবে না।


0

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

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

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


1
আনসেট PAGER( আনসেট করা GIT_PAGERছিল) সমস্যাটি এখনও আছে। এই এনভি ভার্সগুলি যাচাই করার জন্য আমার কোনও অবস্থান আছে?
ডেনি জেনসেন

@ ডেনেনিজেসেন আপনি কমান্ডের উপর পেজারটি সেট করতে পারেন PAGER= git branch(এক জায়গার পরে এবং সমান চিহ্নের ঠিক আগে যেমন লেখার মতো নয়)। কোন ধারণা, তা কোনো উদাঃ চেয়ে ভাল আছে, git branch | cat
মার্টিনাস

-1

আমার একই সমস্যা ছিল git statusএবং git config --global pager.status falseএটিও সমাধান করে।

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