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

Considere:

 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  

E

 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 #  

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

Existe uma maneira colorir a saída? Por exemplo, os arquivos não testados são vermelhos e os arquivos testados verdes

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

Trabalhando no Ubuntu.

EDITAR: Googling encontrou esta resposta que funciona muito bem: git config --global --add color.ui true.

No entanto, existe alguma solução mais geral para adicionar cor a um saída do comando?

Comentários

  • Você quer algo que colore todas as saídas do comando? Como ele saberia quais partes colorir?
  • Acho que se houvesse uma maneira de configurá-lo usando regex: Cada cor poderia ter um regex inicial. E pode haver um regex de cor padrão para desativar todas as cores. E, se o texto ” foo ” aparecer, exiba-o em uma determinada cor …

Resposta

Você pode criar uma seção [color] em sua ~/.gitconfig com por exemplo o seguinte conteúdo

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

Você também pode controlar com precisão o que deseja colorir e de que maneira, por exemplo,

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

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

Comentários

  • Acho que pode valer a pena colocar git config –global color.ui auto (@Evgeny ‘ s resposta) no topo da sua … Acho que ‘ é provavelmente o que a maioria das pessoas é procurando por. Eu ‘ votei positivamente em ambos … Eu ‘ estou apenas dizendo, pelo bem da internet como ela chega aqui, acho que um muitas pessoas só querem aquele forro simples Melhor ainda se eles entenderem, além de sua bondade extra.
  • Funcionou perfeitamente para mim – na [color "status"] seção, adicionei branch = yellow.
  • você pode adicionar a seção [cor] ao projeto ‘ s .git / arquivo de configuração também
  • E você pode apenas definir uma variável de configuração para uma única invocação de um comando git: stackoverflow.com/a/18304605/134044

Resposta

Você provavelmente deseja usar

git config --global color.ui auto 

O auto parte diz que o git só tentará usar cores em terminais que o suportem, e você não obterá sequê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 Git 1.8.4.

A color.ui é uma metaconfiguração que inclui todas as várias color.* configurações disponíveis com comandos git.

Isso é explicado em profundidade em git help config.

Comentários

  • Você pode explicar a diferença entre color.ui true (para o qual auto aponta) versus always? Eu li os documentos , mas ainda não entendi a diferença.
  • @chharvey color.ui = auto + git diff | less – sem cores, color.ui = always + git diff | less – saída colorida. LESS=-R está implícito.

Resposta

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

Comentários

  • Para sua informação, apenas funcionou para git versão 1.5.2.1, outras respostas não ‘ t.

Resposta

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ê pode substituir a configuração para 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: compatível com git 2.4.6, não compatível com git 1.7.1.

Comentários

  • Para qualquer outra pessoa que tente obter cor ao fazer um piping em less como eu estava, você pode criar less passe os caracteres de escape de cor para o terminal via less -R.
  • Quando esse recurso foi adicionado?

Resposta

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 

Resposta

ou desative toda / a maior parte da colorização via:

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 

Comentários

  • OP não estava ‘ procurando desligar as cores, em vez de ligar as cores . No OP, ele declarou como fazer para git e deseja alguma maneira de fazê-lo em um sentido mais global. Se você conhece esse método, edite sua resposta para explicá-lo.
  • às vezes as pessoas procuram algo intimamente relacionado, mas ligeiramente diferente – mas obrigado pelo voto negativo.
  • Gostei it @theRiley

Resposta

Para um git diff colorido em less, isso funciona:

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

Resposta

Você pode fazer isso com o Cor de saída do comando arbitrário . Geralmente funciona, mas eu não descobri como contornar um bug em que os prompts que esperam entrada não são mostrados 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 muito bem com alias git="acoc git" em .bash_profile.

Comentários

  • Você pode compartilhar sua configuração para acoc?
  • Nvm, foi fácil de escrever. 🙂 Adicionado à resposta.

Resposta

Eu sei que a postagem tem quatro anos, mas ninguém respondeu do meu acampamento, daltônicos. Se você puder distinguir cores, ignorar minha postagem.

“git status”, por exemplo, exibe o texto que é branco no fundo / preto no 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 um dded (cevada legível em fundo preto, ilegível em fundo branco). Eu costumava alternar o fundo da janela do meu terminal para / de branco / preto para que pudesse 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 com fundo branco ou preto padrão.

Comentários

  • Você também pode alterar a configuração para definir tudo sem cor por padrão (color.ui = never).

Resposta

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

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

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

Resposta

Dê uma olhada em https://github.com/dandavison/delta para realce de sintaxe de linguagem colorida da saída de diff (git) e realce colorido de linhas adicionadas / removidas no diff .

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *