Existe-t-il un moyen de colorer la sortie pour git (ou n'importe quelle commande)?
Considérer:
baller@Laptop:~/Rails/spunky-monkey$ git status
# On branch new-message-types
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/models/message_type.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
baller@Laptop:~/Rails/spunky-monkey$ git add app/models
Et
baller@Laptop:~/Rails/spunky-monkey$ git status
# On branch new-message-types
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: app/models/message_type.rb
#
La sortie est identique, mais les informations sont totalement différentes: le fichier est passé de non organisé à mis en attente pour validation.
Existe-t-il un moyen de coloriser la sortie? Par exemple, les fichiers non classés sont rouges, les fichiers intermédiaires sont verts?
Ou même Changes not staged for commit:
au rouge et # Changes to be committed:
au vert?
Travailler dans Ubuntu.
EDIT: Google a trouvé cette réponse qui fonctionne très bien: git config --global --add color.ui true
.
Cependant, existe-t-il une solution plus générale pour ajouter de la couleur à une sortie de commande?
Vous pouvez créer une section [color]
dans ton ~/.gitconfig
avec par exemple le contenu suivant
[color]
diff = auto
status = auto
branch = auto
interactive = auto
ui = true
pager = true
Vous pouvez également contrôler précisément ce que vous souhaitez colorer de quelle manière, par ex.
[color "status"]
added = green
changed = red bold
untracked = Magenta bold
[color "branch"]
remote = yellow
J'espère que cela vous aidera à démarrer. Et bien sûr, vous avez besoin d'un terminal qui prend en charge la couleur.
Vous voulez probablement utiliser
git config --global color.ui auto
La partie auto
indique que git essaiera uniquement d'utiliser la couleur sur les terminaux qui le supportent, et vous n'obtiendrez pas de séquences ANSI si vous redirigez la sortie des commandes git vers un fichier par exemple. Le définir sur true
est identique à auto
, et c'est également la valeur par défaut depuis Git 1.8.4.
Le color.ui
est une méta-configuration qui inclut toutes les diverses color.*
configurations disponibles avec les commandes git.
Ceci est expliqué en détail dans git help config
.
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto
La réponse acceptée donne la solution la plus courante. Si, pour une raison quelconque, vous n'avez pas besoin de modifier définitivement la configuration, ce que fait cette solution, vous pouvez remplacer la configuration pour une seule commande git:
git -c color.ui=always <usual git command and options>
Par exemple:
git -c color.ui=always status
git -c color.ui=always diff
Testé: pris en charge sur git 2.4.6, pas pris en charge sur git 1.7.1.
git config --global color.ui always
git config --global color.branch always
git config --global color.diff always
git config --global color.interactive always
git config --global color.status always
git config --global color.grep always
git config --global color.pager true
git config --global color.decorate always
git config --global color.showbranch always
Pour une couleur git diff
canalisé dans less
, cela fonctionne:
git -c color.diff=always diff [...] | less -R
Vous pouvez le faire avec Colorier de sortie de commande arbitraire . Cela fonctionne principalement, mais je n'ai pas compris comment contourner un bogue où les invites attendant une entrée ne sont pas affichées et vous ne pouvez pas simplement taper l'entrée nécessaire connue et appuyer sur Entrée pour continuer dans tous les cas.
Exemple de ~/.acoc.conf
pour git
:
# git
[git/ae]
/.*(error:.*)/ red+bold
/.*(warning:.*)/ yellow
/.*(hint:.*)/ Magenta
/.*(up-to-date).*/ green+bold
/.*(nothing to commit).*/ green
/^(\+.*)/ green
/^(-.*)/ red
..qui fonctionne bien avec alias git="acoc git"
dans .bash_profile
.
Je sais que le poste a quatre ans mais personne n'a répondu de mon camp, le daltonien. Si vous pouvez distinguer les couleurs, ignorez mon message.
"git status", par exemple, affiche du texte blanc sur fond/noir sur fond blanc (lisible), gris foncé pour supprimé (illisible sur fond noir mais lisible sur fond blanc) et gris moyen pour ajouté (orge lisible sur noir) fond, illisible sur fond blanc). J'avais l'habitude de basculer l'arrière-plan de ma fenêtre de terminal vers/de blanc/noir pour pouvoir lire le texte illisible. Une solution simple est plus:
git status | more
Cela rend tout le texte lisible sur une fenêtre de terminal à fond blanc ou noir standard.
Pour coloriser la sortie de git diff
vous pouvez ajouter une section color.diff à ~/.gitconfig. Par exemple:
[color "diff"]
new = bold italic 154
old = bold italic 196
Ici 154
et 196
sont des codes ANSI 256 couleurs. Pour plus de détails, voir man git config
.
ou désactivez tout/la majeure partie de la colorisation via:
git config --global color.ui false
git config --global color.branch false
git config --global color.diff false
git config --global color.interactive false
git config --global color.status false
git config --global color.grep false
git config --global color.pager false
git config --global color.decorate false
git config --global color.showbranch false
Jetez un oeil à https://github.com/dandavison/delta pour la coloration syntaxique du langage coloré de la sortie (git) diff, et la coloration colorée des lignes ajoutées/supprimées dans le diff.