desenv-web-rp.com

Como colorir a saída do git?

Existe uma maneira de colorir a saída para o git (ou qualquer comando)?

Considerar:

[email protected]:~/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")
[email protected]:~/Rails/spunky-monkey$ git add app/models

E

[email protected]:~/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
#

A saída parece a mesma, mas as informações são totalmente diferentes: o arquivo passou de não-estágios para estágios para confirmação.

Existe uma maneira de colorir a saída? Por exemplo, os arquivos que não estão em estágio são vermelhos, e em estágios são verdes?

Ou até Changes not staged for commit: para vermelho e # Changes to be committed: para verde?

Trabalhando no Ubuntu.

EDIT: O Google encontrou esta resposta que funciona muito bem: git config --global --add color.ui true.

No entanto, existe alguma solução mais geral para adicionar cores a uma saída de comando?

269
B Seven

Você pode criar uma seção [color] na tua ~/.gitconfig com p. o seguinte conteúdo

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

Você também pode controlar o que deseja colorir de que maneira, por exemplo,.

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

[color "branch"]
  remote = yellow

Espero que isso ajude você. E, claro, você precisa de um terminal que suporte cores.

279
Marco

Você provavelmente quer usar

git config --global color.ui auto

A parte auto diz que o git tentará usar cores apenas nos terminais que o suportam, e você não obterá seqüências ANSI se redirecionar a saída dos comandos git para um arquivo, por exemplo. Configurá-lo para true é o mesmo que auto, e este também é o padrão desde o Git 1.8.4.

O color.ui é uma meta-configuração que inclui todos os vários color.* configurações disponíveis com os comandos git.

Isso é explicado em profundidade em git help config.

235
Evgeny
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto
20
sakisk

A resposta aceita fornece a solução mais comum. Se, por algum motivo, você não precisar alterar permanentemente a configuração, o que essa solução faz, você poderá substituir a configuração por um único comando git:

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

Por exemplo:

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

Testado: suportado no git 2.4.6, not suportado no git 1.7.1.

17
Hamlet
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
11
mlibre

Para um colorido git diff canalizado para less, isso funciona:

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

Você pode fazer isso com Colourer de saída de comando arbitrário . Geralmente funciona, mas eu não descobri como solucionar um bug em que as solicitações de entrada não são exibidas e você não pode simplesmente digitar a entrada necessária conhecida e pressionar enter para continuar em todos os casos.

Exemplo de ~/.acoc.conf para git:

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

..que funciona bem junto com alias git="acoc git" no .bash_profile.

1
Tom Mahoney

Eu sei que o post tem quatro anos, mas ninguém respondeu do meu acampamento, o daltônico. Se você consegue distinguir cores, ignore minha postagem.

"status git", por exemplo, coloca texto branco sobre fundo/preto sobre fundo branco (legível), cinza escuro para excluído (ilegível contra um fundo preto, mas legível contra um fundo branco) e cinza médio para adição (cevada legível em preto ilegível em fundo branco). Eu costumava alternar o fundo da minha janela do terminal para/de branco/preto para poder ler o texto ilegível. Uma solução simples é mais:

 git status | more

Isso torna todo o texto legível em uma janela de terminal de fundo branco ou preto padrão.

0
Jan David Narkiewicz

Para colorir a saída de git diff você pode adicionar uma seção color.diff ao ~/.gitconfig. Por exemplo:

[color "diff"]
  new = bold italic 154
  old = bold italic 196

Aqui 154 e 196 são códigos de cores ANSI 256. Para mais detalhes, consulte man git config.

0
sergio

ou desative toda/quase toda a colorização por:

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
0
theRiley

Dê uma olhada em https://github.com/dandavison/delta para destacar a sintaxe do idioma colorido da saída diff (git) e o destaque colorido das linhas adicionadas/removidas no diff.

0
ded7