गिट के आउटपुट को कैसे चित्रित करें?


255

वहाँ git (या किसी भी कमांड) के लिए रंग उत्पादन का एक तरीका है?

विचार करें:

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   app/models/message_type.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
baller@Laptop:~/rails/spunky-monkey$ git add app/models

तथा

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   app/models/message_type.rb
#

आउटपुट समान दिखता है, लेकिन जानकारी पूरी तरह से अलग है: फ़ाइल अनस्ट्रेड से प्रतिबद्ध के लिए मंचित हो गई है।

क्या आउटपुट को रंगीन करने का कोई तरीका है? उदाहरण के लिए, जो फाइलें अस्थिर हैं, वे लाल हैं, मंचित हरी हैं?

या यहां तक Changes not staged for commit:कि लाल और # Changes to be committed:हरे रंग के लिए?

उबंटू में काम करना।

संपादित करें: Googling को यह उत्तर मिला जो बहुत अच्छा काम करता है git config --global --add color.ui true:।

हालाँकि, कमांड आउटपुट में रंग जोड़ने के लिए कोई और सामान्य समाधान है?


1
आप कुछ ऐसा चाहते हैं जो सभी कमांड आउटपुट को कलर करता है? यह कैसे पता चलेगा कि किन भागों को रंग देना है?
माइकल Mrozek

मुझे लगता है कि अगर वहाँ regex का उपयोग कर इसे कॉन्फ़िगर करने का एक तरीका था: प्रत्येक रंग में एक regex हो सकता है। और सभी रंगों को बंद करने के लिए एक डिफ़ॉल्ट रंग regex हो सकता है। और, यदि पाठ "फू" दिखाई देता है, तो इसे एक निश्चित रंग में प्रदर्शित करें ...
बी सेवन

जवाबों:


268

आप निम्न सामग्री के साथ [color]अपने में एक अनुभाग बना सकते हैं~/.gitconfig

[color]
  diff = auto
  status = auto
  branch = auto
  interactive = auto
  ui = true
  pager = true

आप यह भी नियंत्रित कर सकते हैं कि आप किस तरह से रंगीन होना चाहते हैं, जैसे

[color "status"]
  added = green
  changed = red bold
  untracked = magenta bold

[color "branch"]
  remote = yellow

मुझे उम्मीद है कि यह आपको शुरू हो जाएगा। और निश्चित रूप से, आपको एक टर्मिनल की आवश्यकता है जो रंग का समर्थन करता है।


14
मुझे लगता है कि यह आपके लिए सबसे ऊपर git config --global color.ui auto (@Evgeny का जवाब) डालने लायक हो सकता है ... मुझे लगता है कि यह वही होने की संभावना है जो अधिकांश लोग ढूंढ रहे हैं। मैंने दोनों को अपटेड किया है ... मैं बस कह रहा हूं, इंटरनेट के लिए जैसा कि यहां आता है, मुझे लगता है कि बहुत से लोग बस उस सरल एक लाइनर को चाहते हैं। सभी बेहतर अगर वे इसे प्राप्त करते हैं, साथ ही आपकी अतिरिक्त अच्छाई।
दोपहर

यह मेरे लिए पूरी तरह से काम करता है - [color "status"]मैंने जो अनुभाग जोड़ा है branch = yellow
वेन वर्नर

3
आप परियोजना के .git / config फ़ाइल को [color] अनुभाग भी जोड़ सकते हैं
andrej

और आप बस एक git कमांड के एकल मंगलाचरण के लिए एक विन्यास चर सेट कर सकते हैं: stackoverflow.com/a/18304605/134044
NeilG

220

आप शायद उपयोग करना चाहते हैं

git config --global color.ui auto

autoभाग का कहना है कि Git केवल कोशिश करते हैं और टर्मिनलों इसका समर्थन पर रंग का प्रयोग करेंगे, और यदि आप उदाहरण के लिए एक फाइल करने के लिए Git आदेशों के उत्पादन अनुप्रेषित आप एएनएसआई दृश्यों नहीं मिलेगा। इसे trueउसी रूप में सेट करना है auto, और यह Git 1.8.4 के बाद से डिफ़ॉल्ट भी है।

color.uiएक मेटा विन्यास है कि सभी विभिन्न शामिल है color.*विन्यास Git आदेशों के साथ उपलब्ध है।

इसमें गहराई से समझाया गया है git help config


क्या आप color.ui true(जो autoइंगित करता है) बनाम के बीच का अंतर समझा सकते हैं always? मैंने डॉक्स पढ़े लेकिन मुझे अभी भी अंतर नहीं मिला है।
छुरी

19
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto

FYI करें, केवल इसने git संस्करण 1.5.2.1 के लिए काम किया, दूसरों के जवाब नहीं।
अभिनीज

14

स्वीकृत उत्तर सबसे आम समाधान देता है। यदि किसी भी कारण से आपको स्थायी रूप से कॉन्फ़िगरेशन को बदलने की आवश्यकता नहीं है, जो कि समाधान करता है, तो आप एक एकल गिट के लिए कॉन्फ़िगरेशन को ओवरराइड कर सकते हैं:

git -c color.ui=always <usual git command and options>

उदाहरण के लिए:

git -c color.ui=always status
git -c color.ui=always diff

परीक्षण किया गया: git 2.4.6 पर समर्थित, git 1.7.1 पर समर्थित नहीं


2
किसी और के लिए रंग पाने की कोशिश करते समय less, जैसे कि मैं बस में था, आप lessरंग से बच पात्रों को टर्मिनल के माध्यम से पास कर सकते हैं less -R
xdhmoore

यह सुविधा कब जोड़ी गई थी?
ओन्द्रा kaižka

11
git config --global color.ui always
git config --global color.branch always
git config --global color.diff always
git config --global color.interactive always
git config --global color.status always
git config --global color.grep always
git config --global color.pager true
git config --global color.decorate always
git config --global color.showbranch always

1

आप इसे आर्बिटवर्ल्ड कमांड आउटपुट कोलर के साथ कर सकते हैं । यह ज्यादातर काम करता है, लेकिन मुझे यह समझ में नहीं आया है कि बग के आसपास कैसे काम किया जाए, जहां इनपुट की उम्मीद नहीं है और आप केवल ज्ञात आवश्यक इनपुट टाइप नहीं कर सकते हैं और हर मामले में जारी रखने के लिए एंटर दबा सकते हैं।

के ~/.acoc.confलिए उदाहरण git:

# git
[git/ae]
/.*(error:.*)/                                    red+bold
/.*(warning:.*)/                                  yellow
/.*(hint:.*)/                                     magenta
/.*(up-to-date).*/                                green+bold
/.*(nothing to commit).*/                         green
/^(\+.*)/                                         green
/^(-.*)/                                          red

..जब साथ alias git="acoc git"में अच्छी तरह से काम करता है .bash_profile


क्या आप अपना कॉन्फ़िगरेशन साझा कर सकते हैं acoc?
ग्रेग डबकी

एनवीएम, यह लिखना आसान था। :) जवाब में जोड़ा गया।
ग्रेग डबकी २ '’१

1

एक रंगीन git diffपाइप के लिए less, यह काम करता है:

git -c color.diff=always diff [...] | less -R

0

मुझे पता है कि पोस्ट चार साल पुरानी है लेकिन मेरे शिविर से किसी ने भी जवाब नहीं दिया, रंग अंधा। यदि आप रंग भेद कर सकते हैं, तो मेरी पोस्ट को अनदेखा करें।

उदाहरण के लिए "git स्टेटस" टेक्स्ट को बैकग्राउंड / व्हाइट बैकग्राउंड पर व्हाइट (लेगिबल), हटे के लिए डार्क ग्रे (ब्लैक बैकग्राउंड के खिलाफ गैरकानूनी लेकिन सफेद बैकग्राउंड के खिलाफ लेगिबल) और मीडियम ग्रे में जोड़ा जाता है (जौ के लिए लेगेबल) पृष्ठभूमि, सफेद पृष्ठभूमि पर अवैध)। मैं अपनी टर्मिनल विंडो की पृष्ठभूमि को सफेद / काले रंग से टॉगल करता था ताकि मैं गैरकानूनी पाठ को पढ़ सकूं। एक सरल समाधान अधिक है:

 git status | more

यह सभी पाठों को एक मानक सफेद या काले रंग की पृष्ठभूमि वाली टर्मिनल विंडो पर सुगम बनाता है।


1
आप डिफ़ॉल्ट रूप से (कोई भी रंग नहीं करने के लिए सब कुछ सेट करने के लिए कॉन्फ़िगरेशन बदल सकते हैं color.ui = never)।
द गाईट विथ द हैट

0

या के माध्यम से सभी / अधिकांश रंगीकरण बंद करें:

git config --global color.ui false
git config --global color.branch false
git config --global color.diff false
git config --global color.interactive false
git config --global color.status false
git config --global color.grep false
git config --global color.pager false
git config --global color.decorate false
git config --global color.showbranch false

ओपी चालू करने के लिए नहीं देख रहा था बंद रंग, बल्कि चालू करने के लिए पर रंग। ओपी में उन्होंने कहा कि कैसे करना है gitऔर अधिक वैश्विक अर्थों में इसे करने का कोई तरीका है। यदि आप ऐसी किसी विधि के बारे में जानते हैं, तो कृपया उसे समझाने के लिए अपना उत्तर संपादित करें।
जिप्सी स्पेलवेवर

कभी-कभी लोग किसी चीज को बारीकी से देख रहे होते हैं लेकिन थोड़ा अलग - लेकिन नीचे की ओर धन्यवाद करते हैं।
theRiley

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