Git'in çıktıları nasıl renklendirilir?


256

Git (veya herhangi bir komut) için çıktıyı renklendirmenin bir yolu var mı?

Düşünmek:

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

Ve

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
#

Çıktı aynı görünüyor, ancak bilgi tamamen farklı: dosya dengesizden sahneleme aşamasına geçti.

Çıktıyı renklendirmenin bir yolu var mı? Örneğin, etiketlenmemiş dosyalar kırmızı, aşamalı yeşiller?

Hatta Changes not staged for commit:kırmızıya ve # Changes to be committed:yeşile bile ?

Ubuntu’da çalışmak.

DÜZENLEME: inşaat büyük bu cevap buldu Googling: git config --global --add color.ui true.

Bununla birlikte, bir komut çıkışına renk eklemek için daha genel bir çözüm var mı?


1
Tüm komut çıktılarını renklendiren bir şey ister misiniz? Hangi parçaların renklendirileceğini nasıl bilebilir?
Michael Mrozek

Ben bunu regex kullanarak yapılandırmanın bir yolu olup olmadığını tahmin ediyorum: Her rengin bir başlangıç ​​regex'i olabilir. Ve tüm renkleri kapatmak için varsayılan bir renk regex olabilir. Ve eğer "foo" metni belirirse, belli bir renkte göster ...
B Seven

Yanıtlar:


268

Aşağıdaki içerikle bir bölüm oluşturabilirsiniz [color].~/.gitconfig

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

Ayrıca ne şekilde renklendirmek istediğinizi de kontrol edebilirsiniz, örneğin;

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

[color "branch"]
  remote = yellow

Umarım bu seni başlatır. Ve tabii ki, rengi destekleyen bir terminale ihtiyacınız var.


14
Git config --global color.ui auto (@Evgeny 'nin cevabı)' nı üstünüze koymaya değeceğini düşünüyorum ... Çoğu insanın aradığı şey bu olabilir. İkisini de kaybettim ... Sadece söylüyorum, buraya gelince internet uğruna, pek çok insan sadece bu basit bir astarı istiyor. Onlar daha iyi olsun, artı senin iyiliğin.
msouth

Bu benim için mükemmel çalıştı - [color "status"]eklediğim bölümde branch = yellow.
Wayne Werner

3
Siz de projenin .git / config dosyasına [color] bölümünü ekleyebilirsiniz
andrej

Ve sadece bir git komutunun tek bir çağrılması için bir yapılandırma değişkeni ayarlayabilirsiniz: stackoverflow.com/a/18304605/134044
NeilG

220

Muhtemelen kullanmak istersin.

git config --global color.ui auto

autoBölüm git sadece denemek ve bunu destekleyecek terminaller üzerinde renk kullanmak, ve örneğin bir dosyaya git komutların çıktısını yönlendirmek eğer ANSI dizileri almazsınız söylüyor. Ayarlamak trueaynıdır autove bu, Git 1.8.4'ten bu yana varsayılandır.

color.uiTüm çeşitli içeren bir meta konfigürasyondur color.*git komutları ile uygun yapılandırmalar.

Bu, derinlemesine açıklanmıştır git help config.


Color.ui true(hangisine autoişaret ediyor) ile arasındaki farkı açıklayabilir misiniz always? Belgeleri okudum ama hala farkı bulamıyorum.
chharvey

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

Bilginize, Sadece bu sürüm 1.5.2.1 git çalıştı, diğerleri cevap vermedi.
AbhiNickz

14

Kabul edilen cevap en yaygın çözümü verir. Herhangi bir nedenle, bu çözümün yaptığı yapılandırmayı kalıcı olarak değiştirmeniz gerekmiyorsa, tek bir git komutu için yapılandırmayı geçersiz kılabilirsiniz:

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

Örneğin:

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

Test: git 2.4.6 desteklenmez, değil Git 1.7.1 desteklenir.


2
lessTıpkı benim yaptığım gibi piping yaparken renk almaya çalışan herkes için less, renk kaçış karakterlerini terminalden geçerek yapabilirsiniz less -R.
xdhmoore

Bu özellik ne zaman eklendi?
Ondra Žiž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

Bunu Keyfi Komut Çıktı Renklendiricisi ile yapabilirsiniz . Çoğunlukla çalışır, ancak girdi beklemenin istenmediği bir hata etrafında nasıl çalışılacağını çözmedim ve bilinen her durumda gerekli girişi girip, enter tuşuna basıp basmayacağınızı çözdüm.

Örnek ~/.acoc.confiçin git:

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

..which güzel birlikte çalışır alias git="acoc git"in .bash_profile.


Senin config için paylaşır acocmısın?
Greg Dubicki

Nvm, yazmak kolaydı. :) Cevabınıza eklendi.
Greg Dubicki

1

Renkli bir git diffboru için less, bu çalışır:

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

0

Görev yerinin dört yaşında olduğunu biliyorum ama kimse benim kampımdan renk körü yanıt vermedi. Renkleri ayırt edebiliyorsanız, yazıma aldırmayın.

örneğin "git durumu", arka plan üzerinde beyaz / beyaz arka plan üzerinde siyah (okunabilir), silinmiş koyu gri (siyah arka plana karşı okunaksız ancak beyaz arka plana karşı okunaklı) ve eklemek için orta gri (siyah arka planda okunabilir) arka plan, beyaz arka plan üzerinde okunaksız). Terminal penceremin arka planını beyazdan / siyahtan değiştirerek eskiden okunamayan metni okuyabilirdim. Basit bir çözüm daha fazlası:

 git status | more

Bu, tüm metni standart bir beyaz veya siyah arka plan terminal penceresinde okunabilir hale getirir.


1
Her şeyi varsayılan olarak renge ayarlamayacak şekilde de yapılandırabilirsiniz ( color.ui = never).
Şapkalı Adam

0

veya renklendirmenin tümünü / çoğunu aşağıdaki yöntemlerle kapatın:

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

OP açmak için bakmıyordum kapalı ziyade açmak için, renkleri üzerinde renklerin. OP’de nasıl yapıldığını gitve daha küresel anlamda yapmanın bir yolunu istediğini belirtti . Böyle bir yöntem biliyorsanız, lütfen açıklamak için cevabınızı düzenleyin.
Çingene Yazımcı

Bazen insanlar birbirleriyle yakından ilgili ama biraz farklı bir şeyler arıyorlar - ancak oy için çok teşekkürler.
Riley,

Beğendim @Riley
Richard Lindhout
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.