Git शाखा कमांड 'कम' की तरह व्यवहार करता है




terminal zsh (6)

जब मैं सभी शाखाओं को सूचीबद्ध करने के लिए git branch कमांड का उपयोग करता हूं, तो मुझे git branch | less का आउटपुट दिखाई देता है git branch | less

कमांड git branch शाखाओं की एक सूची दिखाने वाली है, जैसे कि ls फाइलों के लिए करती है।

यह मुझे मिलने वाला आउटपुट है:

मैं git branch का डिफ़ॉल्ट व्यवहार कैसे प्राप्त करूं? पृष्ठांकित आउटपुट का क्या कारण है?

मैं ZSH का उपयोग oh_my_zsh साथ कर रहा oh_my_zsh (इसमें Git के लिए कुछ भी नहीं), और मेरी .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

Git शाखा कमांड 'कम' की तरह व्यवहार करता है

क्योंकि डिफ़ॉल्ट रूप से git पेजर में आउटपुट को खोलता है (कम से कम ubuntu) में स्वीकृत उत्तर पूरी तरह से पेजर को बदल देगा, जिसे आप पसंद नहीं कर सकते हैं यदि आपका आउटपुट बहुत लंबा है।

मैं less से less पेजर को बदलने की सिफारिश करूंगा ताकि टर्मिनल की ऊंचाई से कम "स्क्रॉल" आउटपुट न हो।

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


जैसा कि अन्य उत्तर बताते हैं, अधिकांश आदेशों के लिए एक पेजर (डिफ़ॉल्ट रूप से less ) में खुद को पाइपिंग करने के लिए गिट डिफॉल्ट होता है।

एक महत्वपूर्ण बिंदु, हालांकि, यह है कि जब LESS का वातावरण परिवर्तनशील होता है, तो Git इसे FRX पर सेट करता है , और परिणाम यह होता है कि उपयोगकर्ता-दृश्यमान व्यवहार वैसा ही होता है जैसे कि कमांड के आउटपुट कम होने पर पेजर का उपयोग नहीं किया गया था (अर्थात यदि आपके पास केवल कुछ शाखाएँ हैं)। आदमी को कम देखें:

-F या --quit-if-one-screen
यदि संपूर्ण फ़ाइल को पहली स्क्रीन पर प्रदर्शित किया जा सकता है, तो स्वचालित रूप से बाहर निकलने के लिए कम कारण हैं।

-R या --RAWRO-CHARS
[...] एएनएसआई "रंग" एस्केप सीक्वेंस "कच्चे" रूप में आउटपुट हैं।

-एक्स या --नो-इनिट
टर्मिनल पर टर्मिंक इनिशियलाइज़ेशन और डीइनएटिलाइज़ेशन स्ट्रिंग्स भेजने में अक्षम। यह कभी-कभी वांछनीय होता है यदि विखंडन स्ट्रिंग कुछ अनावश्यक करता है, जैसे स्क्रीन को साफ़ करना।

यदि आपको वह व्यवहार मिलता है जिसका आप वर्णन करते हैं, तो आपके पास संभवत: $LESS सेट कुछ और होगा, और लंबे समय तक आउटपुट के लिए "पेजर" व्यवहार रखते हुए इसे समस्या से छुटकारा मिलेगा। वैकल्पिक रूप से, आप $LESS रखने के लिए व्यवहार को सक्रिय कर सकते हैं-इसे अपनी .gitconfig फ़ाइल में जोड़कर।

[core]
    pager = less -FRX

यदि आप वास्तव में पेजर चीज को नापसंद करते हैं, तो आप इसे विश्व स्तर पर या प्रति-कमांड आधार पर निष्क्रिय कर सकते हैं (अन्य उत्तर देखें)।


जो लोग इसे ठीक करने के लिए अपने ~/.gitconfig को अपडेट करना चाहते हैं, उनके लिए यह इस प्रकार होगा:

[pager]
   branch = false

निम्न कार्य करें:

[alias]
  br = !git --no-pager branch

शब्दार्थ पर बहस करने के लिए नहीं, लेकिन आपके द्वारा किया जा रहा व्यवहार डिफ़ॉल्ट है। यही कारण है कि आप इसे तब प्राप्त करते हैं जब आप कुछ अलग करने के लिए नहीं कहते हैं। डिफ़ॉल्ट रूप से, branch (और कई अन्य गिट कमांड) टर्मिनल पर आउटपुट भेजते समय एक पेजर का उपयोग करते हैं।

आप --no-pager विकल्प का उपयोग करके इस डिफ़ॉल्ट को ओवरराइड कर सकते हैं

git --no-pager branch

या यदि आप किसी फ़ाइल में आउटपुट रीडायरेक्ट करते हैं, तो गिट को पता लगाना चाहिए कि यह टर्मिनल पर नहीं लिख रहा है और इसलिए किसी पेजर का उपयोग नहीं करना चाहिए। (दूसरी ओर, यह एक स्क्रिप्टिंग उपयोग के मामले का सुझाव देता है, जिस स्थिति में आपको एक git branch में git for-each-ref कमांड का उपयोग करने पर विचार करना चाहिए जैसे कि git branch में प्राथमिकता के लिए git for-each-ref ।)


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

GIT_PAGER कमांड लाइन पर मल्टी-पेज आउटपुट प्रदर्शित करने के लिए उपयोग किए जाने वाले प्रोग्राम को नियंत्रित करता है। यदि यह परेशान है, तो PAGER का उपयोग कमबैक के रूप में किया जाएगा।

अपनी समस्या को हल करने के लिए, आप अपने शेल में PAGER और GIT_PAGER को खोल सकते हैं।







oh-my-zsh