Come configurare il termine Mac OS X in modo che git abbia colore? [chiuso]


200

Ho visto una demo git di Mac OS X online in cui è configurato per avere più colori.

Ad esempio, il suo prompt è giallo, la sua lsdirectory è viola e il suo git diffoutput ha ~ 4 colori (rosa, verde chiaro, rosso, giallo chiaro).

Puoi dirmi come posso configurare il terminale Mac OS X per farlo? È sicuramente Mac OS X Terminal.app, non iTerm.


3
Solo che superuser.com è ancora in beta privata e probabilmente yinglcs non ha accesso.
Fredrik,

Esistono alcuni requisiti per la registrazione beta di Super User oltre a quanto menzionato su blog.stackoverflow.com/2009/07/… ?
las3rjock,

3
Probabilmente no, ma quanti utenti lo sanno? Non è che ci sia un link a quel post su superuser.com che l'utente che ottiene la domanda migrata troverà quando arriva lì (se lo è, non riesco a trovarlo).
Fredrik,

3
Ancora un'altra utile domanda chiusa. Per fortuna non prima che alcune persone potessero rispondere.
Ben Thurley,

1
È ormai noto che le domande di Git sono in tema; @ casperLa chiusura qui è sbagliata e sono votato per riaprire.
Mark Amery,

Risposte:


391

La risposta di William Purcell abilita solo il colore per il comando 'git diff'. Fai questo per abilitare i colori per tutti i comandi git:

$ git config --global color.ui true

Proprio quello di cui avevo bisogno. Grazie.
jffgrdnr,

1
Pura Perfezione. Grazie Signore.
Brandon Buck,

1
oppure puoi controllare questa alternativa più ricca qui: gist.github.com/trey/2722934
Yannis Dran,

@yinglcs, accetti già questa risposta, vero ?!
Eliran Malka l'

questo non funziona
KansaiRobot

57

Per visualizzare il colore nell'output di git diff, è necessario configurare git. Prova a correre

$ git config --global color.diff true

per impostare $ HOME / .gitconfig in modo appropriato.


William, sì! Questo è quello che mi mancava.
avernet,

grazie, funziona perfettamente!
antiqe

13

Normalmente non è qualcosa che configuri il terminale per fare ... Il terminale non è a conoscenza di ciò che sta mostrando ma prova questo nella tua shell (se stai usando bash, in alcune altre shell non esporti ma chiami setenv o qualcos'altro):

export CLICOLOR=1
export TERM=xterm-color

È quindi possibile utilizzare il generatore LSCOLORS per configurare qualcosa che è possibile esportare utilizzando qualcosa come:

export LSCOLORS=fxfxcxdxbxegedabagacad

(quanto sopra dovrebbe darti directory viola)

Quando hai finito e soddisfatto del risultato, aggiungi le tre righe al tuo / etc / bashrc o al file .bashrc nella home directory dell'utente.

Modifica: Inoltre, nel terminale, assicurarsi che la casella di controllo "Visualizza colori ANSI" (nella pagina "Testo") sia selezionata.


.bashrc funziona anche tu? Sul mio mac è .bash_profile, so che è .bashrc su Linux ma ho pensato che fosse diverso su mac con l'intera cosa di BSD (sembra che anche LSCOLORS sia diverso su Linux e BSD / Mac).
Jorge Israel Peña,

.bashrc funziona per me ... E sì, è diverso. gls usa LS_COLORS (che può anche essere generato usando la pagina collegata a)
Fredrik

Grazie. Ma come si può configurare a colori come 'grano', 'viola' nel prompt o l'output? o "pink" nell'output di "git diff". Grazie.
yinglcs,

I colori possibili sono quelli che puoi trovare nel sito a cui ho collegato, fa parte dello standard e quando lo hanno definito sei stato felice se avessi un terminale in grado di mostrare 16 colori.
Fredrik,

13

Questo è quello che uso nel mio file .profile. Funziona come un fascino perché mi permette di vedere l'attuale ramo git e il suo stato attraverso il colore. Se si desidera modificarlo, tenere presente che è importante sfuggire ai codici colore per evitare problemi di avanzamento di riga su righe lunghe.

# Setting GIT prompt
c_cyan=`tput setaf 6`
c_red=`tput setaf 1`
c_green=`tput setaf 2`
c_sgr0=`tput sgr0`

branch_color ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        color=""
        if git diff --quiet 2>/dev/null >&2 
        then
            color=${c_green}
        else
            color=${c_red}
        fi
    else
        return 0
    fi
    echo -n $color
}

parse_git_branch ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        gitver="["$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')"]"
    else
        return 0
    fi
echo -e $gitver
}

#It's important to escape colors with \[ to indicate the length is 0
PS1='\u@\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ '

Quale file .profile hai menzionato?
Darshan Puranik,

@DarshanPurani, intendevo dire il .profilefile nel mio $ bash
Marc M

2

Apri l'app del terminale, quindi apri la finestra di dialogo delle preferenze tramite il menu (Terminale -> Preferenze) o premendo Command+ ,. Una volta aperta la finestra di dialogo delle preferenze, selezionare lo stile del terminale dal riquadro a sinistra, selezionare Testo dalla barra dei pulsanti, quindi assicurarsi che la casella di controllo "Visualizza colori ANSI" sia selezionata.

Ciò consentirà i colori sul terminale. Per ottenere i colori nell'output sul terminale, sarà necessario incorporare i comandi di colore ANSI nei dati inviati al terminale. Il modo in cui ciò avviene dipende dai comandi. Ad esempio (come mostrato sopra) il lscomando ha un'opzione di colori. Per i codici colore, esegui una ricerca su Google per "colore ansi".


Si noti che la domanda è già chiusa come fuori tema. :)
Ryan Kohn,

0

Per un output ls colorato, consiglierei di installare i coreutils gnu e di utilizzare invece quella versione di ls. Per entrambe le versioni di ls dovrai passare il flag corretto, che è --color per la versione gnu o -G per la versione standard di OS X. Quindi puoi fare qualcosa del genere

alias ls='ls --color'

nel tuo .bashrc.

Per colorare il tuo prompt dovrai usare i codici colori corretti per il tuo terminale, ma il mio usa

PROMPT="$(print '%{\e[0;38m%}%{\e[1;1m%]%}[%m:%c] %n%%%{\e[0m%}') "

produrre

[hostname:directory] username%

in bianco audace.

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.