Como colorir a saída do git-status?

92

Eu quero colorir a saída do git-status para que:

untracked files = magenta
new files = green
modified files = blue
deleted files = red

Em vez disso, estou vendo arquivos testados em verde e arquivos não testados em azul: captura de tela do git-status

Meu .gitconfig é configurado com o seguinte com base em algumas pesquisas:

[color]
status = auto

[color "status"]
added = green
changed = blue
untracked = magenta
deleted = red
Andy
fonte
2
Nota: git 2.9.1 suporta atributos itálico e strike. Veja minha edição abaixo.
VonC
Esta resposta abaixo responde à sua pergunta?
VonC

Respostas:

130

Do documento git config :

color.status.<slot>

Use cores personalizadas para colorização de status. <slot>é um dos:

  • header (o texto do cabeçalho da mensagem de status),
  • addedou updated(arquivos que são adicionados, mas não confirmados),
  • changed (arquivos que são alterados, mas não adicionados ao índice),
  • untracked (arquivos que não são rastreados pelo git),
  • branch (o ramo atual),
  • nobranch (a cor em que o aviso de não ramificação é mostrado, assumindo o padrão vermelho)
  • localBranchou remoteBranch(os nomes das filiais locais e remotas, respectivamente, quando as informações da filial e de rastreamento são exibidas no formato abreviado de status),
  • unmerged (arquivos que têm alterações não mescladas).

Os valores dessas variáveis ​​podem ser especificados como em color.branch.<slot>.

Então isso vai funcionar:

git config color.status.changed blue
git config color.status.untracked magenta

Contudo:

new files = green
deleted files = red

Não é possível: você precisa escolher uma cor:

  • se forem adicionados ao índice, escolherão a cor para color.status.added.
  • se não forem adicionados ao índice, escolherão a cor ou color.status.modified.

Claro, conforme comentado por elboletaire :

Lembre-se de ativar a saída de cores, se não tiver sido ativada anteriormente:

git config --global color.ui true

Shaun Luttin adiciona:

O comando também pode ter vários parâmetros entre aspas. Isso inclui duas cores (primeiro plano de fundo) desta lista:

normal, preto, vermelho, verde, amarelo, azul, magenta, ciano e branco;

e também inclui um atributo (estilo) desta lista:

negrito, escuro, ul, piscar e inverter.

Então isso vai funcionar:

git config color.status.changed "blue normal bold"
git config color.status.header "white normal dim"

Nota: com git 2.9.1 (julho de 2016), o esquema de cores de saída aprendeu dois novos atributos, itálico egreve, além de negrito, reverso, etc.

Consulte commit 9dc3515 , commit 54590a0 , commit 5621068 , commit df8e472 , commit ae989a6 , commit adb3356 , commit 0111681 (23 de junho de 2016) por Jeff King ( peff) .
(Fundido por Junio ​​C Hamano - gitster- no commit 3c5de5c , 11 de julho de 2016)

Também permite " no-" para negar atributos

Usar " no-bold" em vez de " nobold" é mais fácil de ler e mais natural de digitar (para mim, de qualquer maneira, embora tenha sido a pessoa que introduziu "nobold" em primeiro lugar). É fácil permitir ambos.

VonC
fonte
30
Lembre-se de habilitar a saída de cores se ela não tiver sido habilitada anteriormente:git config --global color.ui true
elboletaire
1
@elboletaire bom ponto. Eu incluí na resposta para mais visibilidade.
VonC
1
Obrigado, color.ui é a resposta.
Robeezy