2009-07-20 26 views
189

J'ai vu une démo git Mac OS X en ligne dans laquelle il est configuré pour avoir plusieurs couleurs. Par exemple, son invite est orange, son répertoire ls est violet et sa sortie git diff a ~ 4 couleurs (rose, vert clair, rouge, jaune pâle).Comment configurer le terme Mac OS X pour que git ait la couleur?

Pouvez-vous me dire comment configurer le terminal Mac OS X pour y parvenir? C'est définitivement Mac OS X Terminal.app, pas iTerm.

+3

Appartient à superuser.com? – OscarRyz

+3

Sauf que superuser.com est toujours en version bêta privée et que yinglcs n'y a probablement pas accès. – Fredrik

+0

Existe-t-il une exigence d'inscription à la bêta en super utilisateur en plus de ce qui est mentionné sur http://blog.stackoverflow.com/2009/07/super-user-semi-private-beta-begins/? – las3rjock

Répondre

11

Ce n'est normalement pas quelque chose que vous configurez le terminal à faire ... Le terminal ne sait pas ce qu'il montre mais essayez ceci dans votre shell (si vous utilisez bash, dans d'autres shells vous n'exportez pas mais appelez setenv ou autre chose):

export CLICOLOR=1 
export TERM=xterm-color 

vous pouvez ensuite utiliser LSCOLORS generator à quelque chose de configuration que vous pouvez exporter en utilisant quelque chose comme:

export LSCOLORS=fxfxcxdxbxegedabagacad 

(ci-dessus doivent vous donner des répertoires violet)

Lorsque vous avez terminé et que vous êtes satisfait du résultat, ajoutez les trois lignes à votre fichier/etc/bashrc ou au fichier .bashrc dans le répertoire personnel de votre utilisateur.

Editer: De même, dans votre terminal, assurez-vous que la case à cocher "Afficher les couleurs ANSI" (sur la page "Texte") est cochée.

+0

.bashrc fonctionne aussi? Sur mon mac c'est .bash_profile, je sais que c'est .bashrc sous Linux mais je me suis dit que c'était différent sur Mac avec tout le BSD (LSCOLORS est différent sur Linux et BSD/Mac, semble-t-il). –

+0

.bashrc fonctionne pour moi ... Et oui, c'est différent. gls utilise LS_COLORS (qui peut aussi être généré en utilisant la page liée à) – Fredrik

+0

Merci. Mais comment peut-on configurer aux couleurs comme «blé», «violet» dans la sortie de l'invite ou ls? ou "rose" dans la sortie "git diff". Merci. – yinglcs

0

Pour la sortie colorée de ls, je recommande d'installer gnu coreutils et d'utiliser cette version de ls à la place. Pour chaque version de ls, vous devrez lui passer le bon drapeau, qui est --color pour la version gnu ou -G pour la version standard d'OS X. Ainsi vous pouvez faire quelque chose comme

alias ls='ls --color' 

dans votre .bashrc.

Pour la couleur de votre message, vous devez utiliser les codes couleurs correctes pour votre terminal, mais la mienne utilise

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

pour produire

[hostname:directory] username% 

en blanc gras.

56

Pour afficher la couleur dans la sortie de git diff, vous devez configurer git. Essayez d'exécuter

$ git config --global color.diff true 

pour définir correctement votre $ HOME/.gitconfig.

+0

William, oui! C'est ce qui me manquait. – avernet

+0

merci, cela fonctionne parfaitement! – antiqe

10

C'est ce que j'utilise dans mon fichier .profile. Fonctionne comme un charme car il me permet de voir la branche git actuelle ainsi que son état à travers la couleur. Si vous souhaitez le modifier s'il vous plaît noter qu'il est important de escape color codes afin d'éviter les problèmes d'alimentation en ligne dans les longues lignes.

# 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='\[email protected]\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ ' 
+0

Quel fichier .profile avez-vous mentionné? –

379

William Purcell's answer ne permet la couleur de la commande 'git diff'.Pour ce faire, pour activer les couleurs pour toutes les commandes git:

$ git config --global color.ui true 
+0

Juste ce dont j'avais besoin. Merci. – jffgrdnr

+0

Pure Perfection. Merci Monsieur. –

+0

ou vous pouvez vérifier ce choix plus riche alternative ici: https://gist.github.com/trey/2722934 –

0

Ouvrez l'application Terminal, puis ouvrez les préférences dialogue soit par le menu (Terminal -> Préférences) ou en appuyant sur Commande + ,. Une fois la boîte de dialogue de préférences ouverte, sélectionnez le style de terminal dans le volet à gauche, sélectionnez Texte dans la barre de boutons, puis assurez-vous que la case à cocher "Afficher les couleurs ANSI" est cochée.

Cela activera les couleurs sur le terminal. Pour obtenir des couleurs dans la sortie du terminal, vous devez intégrer des commandes de couleur ANSI dans les données envoyées au terminal. Comment cela est fait dépend des commandes. Par exemple (comme montré ci-dessus) la commande ls a une option de couleurs. Pour les codes de couleur, faites une recherche google pour "couleur ansi".

+0

Notez que la question est déjà fermée hors sujet. :) –