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, adicioneibranch = 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 qualauto
aponta) versusalways
? 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 criarless
passe os caracteres de escape de cor para o terminal vialess -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 .