git का रंग गलत तरीके से प्रदर्शित होता है


46

सभी git कमांड से रंगीन आउटपुट प्राप्त करने के लिए, मैं निम्नलिखित सेट करता हूं:

git config --global color.ui true

हालाँकि, यह इस तरह के लिए एक उत्पादन का उत्पादन git diff,git log

git diff स्क्रीनशॉट

जबकि कमांड जैसे git statusप्रदर्शन ठीक है

git स्टेटस स्क्रीनशॉट

केवल कुछ आदेशों में यह बचा हुआ रंग कोड क्यों नहीं पहचान रहा है और मैं इसे कैसे ठीक कर सकता हूं?

मैं xterm-256colorOS X 10.8.2 पर iTerm 2 (टर्मिनल प्रकार ) का उपयोग कर रहा हूं और अपने शेल के रूप में zsh

zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)

git --version                                                                                                                      
git version 1.7.9.6 (Apple Git-31.1)

जवाबों:


65

आप एस्केप दृश्यों को देख रहे हैं जो टर्मिनल को बताए गए एस्केप चरित्र के साथ प्रदर्शित रंगों को बदलने के लिए कहते हैं ESC, जबकि वांछित व्यवहार यह होगा कि एस्केप अनुक्रमों का अपना इच्छित प्रभाव होता है।

जैसे आदेशों git diffऔर git logपाइप एक में अपने उत्पादन पेजर , lessडिफ़ॉल्ट रूप से। Git यह बताने की कोशिश करता है कि lessनियंत्रण पात्रों को उनके नियंत्रण प्रभाव को रखने की अनुमति है, लेकिन यह आपके लिए काम नहीं कर रहा है।

यदि lessआपका पेजर है, लेकिन आपके पास पर्यावरण वैरिएबल है LESSजो किसी ऐसे मूल्य पर सेट है जिसमें रंग शामिल नहीं है -rया -R, lessरंग प्रदर्शित करने में असमर्थ है । यह सामान्य रूप से गुजरता है LESS=-FRSX, लेकिन LESSपर्यावरण में पहले से ही निर्धारित नहीं है। जीआईटी द्वारा आह्वान करने पर रंगों को प्रदर्शित करने के -Rलिए बताने के lessलिए विकल्प को स्पष्ट रूप से पास करना है :

git config --global core.pager 'less -R'

यदि lessआपका पेजर नहीं है, तो या तो स्विच करें lessया यह पता लगाएं कि आपके पेजर को कैसे रंग प्रदर्शित करना है।

यदि आप नहीं चाहते हैं कि जब यह एक पेजर को लागू कर रहा हो तो रंगों को प्रदर्शित करने के color.uiलिए सेट करें, autoइसके बजाय सेट करें true


आह, धन्यवाद। जब मुझे पता था कि रंगों को प्रदर्शित करने की lessआवश्यकता -Rहै, तो मैं यह भूल गया कि git logऔर git diffआउटपुट को पाइप किया गया था less। धन्यवाद :)

5
धन्यवाद! मैंने ध्यान नहीं दिया था कि ~/.profileFreeBSD में डिफ़ॉल्टPAGER=more; export PAGER
जेफरी गोल्डबर्ग

धन्यवाद। मैंने LESSसेट किया था -Kक्योंकि मुझे CTRL-Cहर चीज में सक्षम होना पसंद है । मैंने सोचा कि यह उस चर के साथ कुछ कायरता था, और अब मुझे पता है कि इसे कैसे ठीक करना है।
त्रिसिस

2

गिल्स के जवाब में सुधार करते हुए , आप अपने पुराने $LESSविकल्पों को अपने git config में उपयोग करके रख सकते हैं (उदाहरण के लिए ~/.gitconfig):

[core]
pager = less -+$LESS -FRX

quazgar का जवाब अच्छा है। मेरे पास LESS=-iमेरी bashrc में, तो मैं ऐसा करने के लिए होता है `[कोर] पेजर = कम $ कम -FR` मैं एक्स बाहर ले लिया है, क्योंकि एक्स के साथ, मेरे मौजूदा टर्मिनल सामग्री मिट जाता है, मुझे लगता है कि टर्मिनल सामग्री रहता है पसंद करते हैं।
वेन वॉकर

1

अगर आपके पास बिजीबॉक्स है तो आप इस आउटपुट को भी देख सकते हैं । अल्पाइन लिनक्स एक लोकप्रिय डिस्ट्रो का एक अच्छा उदाहरण है जो इसका उपयोग करता है। Https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F देखें

यह जानने का एक सरल तरीका है कि क्या आप वर्तमान में बिजीबॉक्स का उपयोग करते हैं:

realpath `which less`

या यदि आप मछली के खोल का उपयोग करते हैं

realpath (which less)

यदि आउटपुट है /bin/busybox, तो आप कम से कम ग्नू स्थापित करके अपनी समस्या का समाधान कर सकते हैं ।

अल्पाइन पर:

sudo apk --update add less

डिस्ट्रो / पैकेज मैनेजर के आधार पर कमांड अलग होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.