Como colorir o console do Git?


371

Vi recentemente que o gitconsole do Windows é colorido, por exemplo, verde para adições, vermelho para exclusões etc. Como faço para colorir meu gitconsole dessa maneira?

Para instalá-lo, usei o comando: $ sudo apt-get install git-core


6
Iniciando o git1.8.4, você deve ver as cores por padrão. Veja minha resposta abaixo .
VonC

11
O @VonC git 1.9.1 no Ubuntu 14.04 não aconteceu. Tive que definir a configuração da resposta de JoelPurra.
Izkata 14/09

11
@ Izkata estranho, eu vou testá-lo mais tarde, mas que tal um git 2.1+? (como comentei abaixo em stackoverflow.com/questions/10998792/… )
VonC

Respostas:


682

Conforme observado pelo @VonC , o color.uipadrão é autodesde Git 1.8.4


Da pergunta Unex e Linux Stackexchange Como colorir a saída do git? e a resposta de @Evgeny :

git config --global color.ui auto

A color.uié uma meta-configuração que inclui todas as várias color.*configurações disponíveis com gitcomandos. Isso é explicado em profundidade git help config.

Então, basicamente, é mais fácil e mais à prova do futuro do que definir as diferentes color.*configurações separadamente.

Explicação detalhada da git configdocumentação :

color.ui: Essa variável determina o valor padrão para variáveis ​​como color.diffe color.grepque controlam o uso de cores por família de comandos. Seu escopo será expandido à medida que mais comandos aprendem a configuração para definir um padrão para a --coloropção. Defina como alwaysse você deseja que toda a saída não destinada ao consumo da máquina use cores, trueou autose deseja que essa saída use cores quando gravada no terminal, falseou neverse preferir que os comandos git não usem cores, a menos que sejam ativados explicitamente com alguns outra configuração ou --coloropção.


11
Isso funciona em OSX também, não apenas Linux como a questão foi perguntando
Stackexchange Que o Heck

Provavelmente precisa adicionar 'true' no final. git config --global color.ui auto true
Vamshi

6
@ Skeptor: não, autoé suficiente.
Joel Purra

2
@ Fani: sim, é persistente.
Joel Purra

5
É persistente porque adiciona a ui = autoentrada à [color]seção no ~/.gitconfigarquivo do usuário .
Andris


30

Adicione ao seu arquivo .gitconfig o próximo código:

  [color]
    ui = auto
  [color "branch"]
    current = yellow reverse
    local = yellow
    remote = green
  [color "diff"]
    meta = yellow bold
    frag = magenta bold
    old = red bold
    new = green bold
  [color "status"]
    added = yellow
    changed = green
    untracked = cyan

7

O Git colore automaticamente a maior parte de sua saída, se você solicitar. Você pode ser muito específico sobre o que deseja colorir e como; mas para ativar toda a coloração padrão do terminal, defina color.ui como true:

git config --global color.ui true

6

No Ubuntu ou em qualquer outra plataforma (sim, Windows também!); iniciando o git1.8.4 , lançado em 23/08/2013 , você não precisará fazer nada :

Muitos tutoriais ensinam os usuários a definir "color.ui" como "auto" como a primeira coisa após definir " user.name/email" para se apresentarem ao Git. Agora a variável é padronizada como " auto".

Então você verá cores por padrão.


2
(bem, até mesmo o Windows, dependendo do terminal: stackoverflow.com/a/12133244/6309 )
VonC

2
Usando o Ubuntu em 2014, instalou o git e ainda precisava executar git config --global color.ui auto. O mesmo vale para o meu Mac, o único padrão autoera o Git Bash no meu PC com Windows.
Sargas

11
@sargas Claro, você precisa instalar a partir de um PPA : launchpad.net/~git-core/+archive/ppa (para Ubuntu) ou git-scm.com/download/mac (para Mac)
VonC

11
Entendo, então depende da fonte. Agradeço seu tempo para comentar sobre isso.
Sargas

6

No seu ~/.gitconfigarquivo, basta adicionar este:

[color]
  ui = auto

Ele cuida de todos os seus comandos git.


5

Outra maneira é editar o .gitconfig(crie um, se não existir), por exemplo:

vim ~/.gitconfig

e depois adicione:

[color]
  diff = auto
  status = auto
  branch = auto

3
como @ chuntao-lu mencionado [color] ui = autoé suficiente.
Chacko Mathew

5

O GIT usa saída colorida por padrão, mas em alguns sistemas como o CentOS, ele não está ativado. Você pode habilitá-lo assim

git config --global color.ui  true 
git config --global color.ui  false 
git config --global color.ui  auto 

Você pode escolher o comando necessário a partir daqui.

Aqui --global é opcional para aplicar ações a todos os repositórios do seu sistema. Se você quiser aplicar coloração apenas ao repositório atual, poderá fazer algo assim -

 git config color.ui  true 

1

Com o Git 2.18, você tem mais controle sobre como deseja especificar cores no console.
O git configcomando " " utiliza opções separadas, por exemplo, " --int", " --bool" etc. para especificar que tipo de chamador deseja que o valor seja interpretado .

Uma nova " --type=<typename>" opção foi introduzida, o que tornaria mais fácil definir novos tipos.

Consulte commit fb0dc3b (18 de abril de 2018) e commit 0a8950b (09 de abril de 2018) por Taylor Blau ( ttaylorr) .
(Mesclado por Junio ​​C Hamano - gitster- no commit e3e042b , 08 de maio de 2018)

builtin/config.c: suporte --type=<type>como alias preferido para--<type>

git confighá muito tempo permite que os chamadores forneçam um 'especificador de tipo', que instrui git config(1) garantir que os valores recebidos possam ser interpretados como esse tipo e (2) que os valores de saída são canonizados nesse tipo.

Em outra série, propomos estender essa funcionalidade com --type=colore --defaultpara substituir --get-color.

No entanto, tradicionalmente usamos --colorpara significar "colorir essa saída", em vez de "esse valor deve ser tratado como uma cor".

Atualmente, git confignão suporta esse tipo de coloração, mas devemos ter cuidado para evitar agachar-se nessa opção muito cedo, para que git configpossa suportar --color(no sentido tradicional) no futuro, se desejado.

Neste patch, oferecemos suporte --type=<int|bool|bool-or-int|...>além de --int, --boole etc.
Isso permite que o patch a seguir mencionado ofereça suporte à consulta de um valor de cor com um padrão via --type=color --default=..., sem desperdiçar --color.

Mantemos o comportamento histórico de reclamar quando vários --<type>sinalizadores de estilo herdado são fornecidos, além de estendê-lo a --type=<type>sinalizadores conflitantes de novo estilo . --int --type=int(e seu par comutativo) não reclama, mas --bool --type=int(e seu par comutativo) reclama .

Então, antes você tinha --boole --intagora ( documentação ):

--type <type>

' git config' garantirá que qualquer entrada ou saída seja válida sob a (s) restrição (s) de tipo fornecida (s) e canonizará os valores de saída na <type>forma canônica.

Os válidos <type>incluem:

  • ' bool': canoniza os valores como " true" ou " false".
  • ' int': canoniza valores como números decimais simples. Um sufixo opcional de ' k', ' m' ou ' g' fará com que o valor seja multiplicado por 1024, 1048576 ou 1073741824 na entrada.
  • ' bool-or-int': canonize de acordo com ' bool' ou ' int', conforme descrito acima.
  • ' path': canonicalize adicionando um ~valor inicial ao valor $HOMEe ~userao diretório inicial do usuário especificado. Esse especificador não tem efeito ao definir o valor (mas você pode usar git config section.variable ~/na linha de comando para permitir que seu shell faça a expansão.)
  • ' expiry-date': canonicalize convertendo de uma sequência de datas fixa ou relativa para um carimbo de data / hora. Este especificador não tem efeito ao definir o valor.
--bool::
--int::
--bool-or-int::
--path::
--expiry-date::
  Historical options for selecting a type specifier. Prefer instead `--type`,
(see: above).

Observe que o Git 2.22 (Q2 2019) explica que " git config --type=color ..." deve substituir " git config --get-color", mas há uma pequena diferença que não foi documentada, que agora está corrigida.

Veja commit cd8e759 (05 Mar 2019) de Jeff King ( peff) .
(Incorporado por Junio ​​C Hamano - gitster- in commit f6c75e3 , 20 de março de 2019)

config: a --type=colorsaída do documento é uma linha completa

Embora a --type=coloropção mais recente " " para " git config" seja compatível com a --get-coloropção tradicional " ", ao contrário da última, sua saída não é uma linha incompleta que não possui LF no final.
Isso o torna consistente com a saída de outros tipos como " git config --type=bool".

Documente , pois às vezes surpreende usuários inocentes.

Agora, ele lê:

--type=color [--default=<default>]é preferível a --get-color (mas observe que --get-coloromitirá a nova linha à direita impressa por --type=color).


Você pode ver o git config --type=boolGit 2.26 (Q1 2020) usado para substituir as git config --boolchamadas " " nos modelos de amostra.

Veja commit 81e3db4 (19 de janeiro de 2020) de Lucius Hu ( lebensterben) .
(Mesclado por Junio ​​C Hamano - gitster- na confirmação 7050624 , 30 de janeiro de 2020)

templates: corrigir opção de tipo obsoleto --bool

Assinado por: Lucius Hu

A --boolopção para git-configé marcada como histórica e é recomendável que os usuários usem --type=bool.
Essa confirmação substitui todas as ocorrências dos --boolmodelos.

Observe também que, há outras opções de tipo obsoleto são encontrados, incluindo --int, --bool-or-int, --path, ou --expiry-date.


0

consulte aqui: https://nathanhoad.net/how-to-colours-in-git/

passos:

  1. Abra ~ / .gitconfig para edição

    vi ~ / .gitconfig

  2. Cole o seguinte código:

    [color]
      ui = auto
    [color "branch"]
      current = yellow reverse
      local = yellow
      remote = green
    [color "diff"]
      meta = yellow bold
      frag = magenta bold
      old = red bold
      new = green bold
    [color "status"]
      added = yellow
      changed = green
      untracked = cyan
    
  3. Salve o arquivo.

Basta alterar qualquer arquivo em seu repositório local e fazer

git status

Já existe o mesmo # answer-29320572 por Victor
criticabug 26/02
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.