Come colorare la console Git?


371

Recentemente ho visto che la gitconsole in Windows è colorata, ad esempio verde per aggiunte, rosso per eliminazioni, ecc. Come posso colorare la mia gitconsole in quel modo?

Per installarlo, ho usato il comando: $ sudo apt-get install git-core


6
A partire da git1.8.4, dovresti vedere i colori di default. Vedi la mia risposta qui sotto .
VonC,

1
@VonC git 1.9.1 su Ubuntu 14.04, non è successo. Ho dovuto impostare personalmente la configurazione dalla risposta di JoelPurra.
Izkata,

1
@Izkata strano, lo proverò più tardi, ma per quanto riguarda un git 2.1+? (come ho commentato qui di seguito in stackoverflow.com/questions/10998792/... )
VonC

Risposte:


682

Come notato da @VonC , il color.uivalore predefinito è autoGit 1.8.4


Dalla domanda Unix e Linux su Stackexchange Come colorare l'output di git? e la risposta di @Evgeny :

git config --global color.ui auto

La color.uiè una configurazione meta che comprende tutte le diverse color.*configurazioni disponibili con giti comandi. Questo è spiegato in modo approfondito in git help config.

Quindi, in pratica, è più facile e più a prova di futuro che impostare le diverse color.*impostazioni separatamente.

Spiegazione approfondita dalla git configdocumentazione :

color.ui: Questa variabile determina il valore predefinito per variabili come color.diffe color.grepche controllano l'uso del colore per famiglia di comandi. Il suo ambito si espanderà man mano che altri comandi apprenderanno la configurazione per impostare un valore predefinito per l' --coloropzione. Impostarlo su alwaysse si desidera che tutti gli output non destinati al consumo della macchina utilizzino il colore, trueo autose si desidera che tali output utilizzino il colore quando sono scritti sul terminale, o su falseo neverse si preferisce che i comandi git non utilizzino il colore a meno che non siano abilitati esplicitamente con alcuni altra configurazione o l' --coloropzione.


11
Funziona anche su OSX, non solo su Linux come la domanda si
poneva

Probabilmente è necessario aggiungere "true" alla fine. git config --global color.ui auto true
Vamshi

6
@Skeptor: no, autoè abbastanza.
Joel Purra,

2
@Phani: sì, è persistente.
Joel Purra,

5
È persistente perché aggiunge la ui = autovoce alla [color]sezione nel ~/.gitconfigfile dell'utente .
Andris,


30

Aggiungi al tuo prossimo file .gitconfig:

  [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

Git colora automaticamente la maggior parte del suo output se lo chiedi. Puoi essere molto specifico su cosa vuoi colorare e come; ma per attivare tutta la colorazione del terminale predefinita, imposta color.ui su true:

git config --global color.ui true

6

In Ubuntu o qualsiasi altra piattaforma (sì, anche Windows!); a partire da git1.8.4 , che è stato rilasciato il 23-08-2013 , non dovrai fare nulla :

Molti tutorial insegnano agli utenti a impostare "color.ui" su "auto" come prima cosa dopo aver impostato " user.name/email" per presentarsi a Git. Ora la variabile di default è " auto".

Quindi vedrai i colori di default.


2
(beh, anche Windows, a seconda del terminale: stackoverflow.com/a/12133244/6309 )
VonC

2
Usando Ubuntu nel 2014, ha installato git e doveva ancora funzionare git config --global color.ui auto. Lo stesso vale per il mio Mac, l'unico che per impostazione predefinita autoera Git Bash sul mio PC Windows.
sargas,

1
@sargas Certo, devi installarlo da un PPA : launchpad.net/~git-core/+archive/ppa (per Ubuntu) o git-scm.com/download/mac (per Mac)
VonC

1
Vedo, quindi dipende dalla fonte. Apprezzo il tuo tempo per commentare questo.
sargas,

6

Nel tuo ~/.gitconfigfile, aggiungi semplicemente questo:

[color]
  ui = auto

Si prende cura di tutti i tuoi comandi git.


5

Un altro modo è modificare il .gitconfig(crearne uno se non esiste), ad esempio:

vim ~/.gitconfig

e quindi aggiungere:

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

3
come @ citatoo-lu [color] ui = autoè sufficiente.
Chacko Mathew,

5

GIT utilizza l'output colorato per impostazione predefinita, ma su alcuni sistemi come CentOS non è abilitato. Puoi abilitarlo in questo modo

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

Puoi scegliere il comando richiesto da qui.

Qui --global è facoltativo per applicare un'azione per ogni repository nel tuo sistema. Se desideri applicare la colorazione solo per il repository corrente, puoi fare qualcosa del genere:

 git config color.ui  true 

1

Con Git 2.18, hai un maggiore controllo su come vuoi specificare i colori nella console.
Il git configcomando " " utilizza opzioni separate, ad esempio " --int", " --bool", ecc. Per specificare quale tipo il chiamante desidera che il valore venga interpretato come .

È --type=<typename>stata introdotta una nuova " " opzione, che renderebbe più pulito definire nuovi tipi.

Vedi commit fb0dc3b (18 aprile 2018) e commit 0a8950b (09 aprile 2018) di Taylor Blau ( ttaylorr) .
(Unito da Junio ​​C Hamano - gitster- in commit e3e042b , 08 maggio 2018)

builtin/config.c: supporto --type=<type>come alias preferito per--<type>

git config ha permesso a lungo ai chiamanti di fornire un "identificatore del tipo", che istruisce git config di (1) assicurare che i valori in arrivo possano essere interpretati come quel tipo e (2) che i valori in uscita siano canonizzati sotto quel tipo.

In un'altra serie, proponiamo di estendere questa funzionalità con --type=colore --defaultdi sostituirla --get-color.

Tuttavia, usiamo tradizionalmente --colorper significare "colorare questo output", invece di "questo valore dovrebbe essere trattato come un colore".

Attualmente, git confignon supporta questo tipo di colorazione, ma dovremmo fare attenzione a non occuparci troppo presto di questa opzione, in modo che git configpossa supportare --color(nel senso tradizionale) in futuro, se lo si desidera.

In questa patch, supportiamo --type=<int|bool|bool-or-int|...>oltre a --int, --boole così via.
Ciò consente alla patch sopracitata in arrivo di supportare l'interrogazione di un valore di colore con un valore predefinito via --type=color --default=..., senza sperperare --color.

Manteniamo il comportamento storico di lamentarci quando --<type>vengono fornite più bandiere in stile legacy , oltre a estenderlo a --type=<type>bandiere di nuovo stile in conflitto . --int --type=int(e la sua coppia commutativa) non si lamenta, ma --bool --type=int(e la sua coppia commutativa).

Quindi prima avevi --boole --int, ora ( documentazione ):

--type <type>

' git config' assicurerà che qualsiasi input o output sia valido in base ai vincoli di tipo dato e canonicalizzerà i valori in uscita in<type> forma canonica.

Sono validi <type>:

  • ' bool': canonicalizza i valori come " true" o " false".
  • ' int': canonicalizza i valori come semplici numeri decimali. Un suffisso facoltativo di ' k', ' m' o ' g' farà sì che il valore venga moltiplicato per 1024, 1048576 o 1073741824 al momento dell'input.
  • ' bool-or-int': canonicalizza secondo ' bool' o 'int ', come descritto sopra.
  • ' path': canonicalizza aggiungendo un lead ~al valore di $HOMEe ~useralla home directory per l'utente specificato. Questo identificatore non ha alcun effetto durante l'impostazione del valore (ma è possibile utilizzaregit config section.variable ~/ dalla riga di comando per consentire alla shell di eseguire l'espansione).
  • ' expiry-date': canonicalizza convertendo da una stringa di data fissa o relativa in un timestamp. Questo identificatore non ha alcun effetto durante l'impostazione del valore.
--bool::
--int::
--bool-or-int::
--path::
--expiry-date::
  Historical options for selecting a type specifier. Prefer instead `--type`,
(see: above).

Nota che Git 2.22 (Q2 2019) spiega " git config --type=color ..." è destinato a sostituire " git config --get-color", ma c'è una leggera differenza che non è stata documentata, che ora è stata risolta.

Vedi commit cd8e759 (05 mar 2019) di Jeff King ( peff) .
(Unita da Junio ​​C Hamano - gitster- in commit f6c75e3 , 20 mar 2019)

config: l' --type=coloroutput del documento è una riga completa

Anche se la nuova " --type=color" opzione su " git config" è pensata per essere compatibile verso l'alto con la tradizionale " --get-color" opzione, a differenza di quest'ultima, il suo output non è una linea incompleta alla quale manca la LF.
Ciò lo rende coerente con l'output di altri tipi come " git config --type=bool".

Documentalo , poiché a volte sorprende gli utenti ignari.

Questo ora dice:

--type=color [--default=<default>]è preferibile --get-color (ma si noti che --get-colorometterà la nuova riga finale stampata da --type=color).


Puoi vedere git config --type=boolusato con Git 2.26 (Q1 2020) per sostituire "git config --bool " le chiamate nei modelli di esempio.

Vedi commit 81e3db4 (19 gennaio 2020) di Lucius Hu ( lebensterben) .
(Unita da Junio ​​C Hamano - gitster- in commit 7050624 , 30 gennaio 2020)

templates: correzione dell'opzione di tipo obsoleto --bool

Firmato-fuori-da: Lucius Hu

L' --boolopzione to git-configè contrassegnata come cronologica e si consiglia agli utenti di utilizzare --type=boolinvece.
Questo commit sostituisce tutte le occorrenze di --boolnei modelli.

Si noti inoltre che, altre opzioni di tipo deprecato si trovano, tra cui --int, --bool-or-int, --path, o --expiry-date.


0

fare riferimento qui: https://nathanhoad.net/how-to-colours-in-git/

passaggi:

  1. Apri ~ / .gitconfig per la modifica

    vi ~ / .gitconfig

  2. Incolla il seguente codice:

    [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. Salva il file.

Basta modificare qualsiasi file nel repository locale e fare

git status

C'è già lo stesso # answer-29320572 di Victor
criticabug il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.