Existe-t-il un moyen de colorer la sortie pour git (ou toute commande)?
Considérez:
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 #
Le résultat est le même, mais les informations sont totalement différentes: le fichier est passé de non-sté à stagé pour la validation.
Y a-t-il un moyen coloriser la sortie? Par exemple, les fichiers qui ne sont pas mis en scène sont rouges, les fichiers mis en scène sont verts?
Ou même Changes not staged for commit:
en rouge et # Changes to be committed:
en vert?
Vous travaillez sous 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 à un sortie de commande?
Commentaires
- Vous voulez quelque chose qui colorise toutes les sorties de commande? Comment pourrait-il savoir quelles parties colorer?
- Je suppose quil y avait un moyen de le configurer en utilisant une expression régulière: chaque couleur pourrait avoir une expression régulière de début. Et il pourrait y avoir une expression régulière de couleur par défaut pour désactiver toutes les couleurs. Et, si le texte » foo » apparaît, affichez-le dans une certaine couleur …
Réponse
Vous pouvez créer une section [color]
dans votre ~/.gitconfig
avec eg 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 voulez colorer de quelle manière, par exemple
[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow
Jespère que cela vous permettra de démarrer. Et bien sûr, vous avez besoin dun terminal qui prend en charge la couleur.
Commentaires
- Je pense que cela pourrait valoir la peine de mettre git config –global color.ui auto (réponse de @Evgeny ‘) en haut de la vôtre … Je pense que ‘ est probablement ce que la plupart des gens sont à la recherche de. Jai ‘ avoir voté pour les deux … Je ‘ je dis simplement, pour le bien dInternet tel quil vient ici, je pense quun beaucoup de gens veulent juste cette simple doublure. Tant mieux sils lobtiennent, plus votre bonté supplémentaire.
- Cela a parfaitement fonctionné pour moi – dans la section
[color "status"]
, jai ajoutébranch = yellow
. - vous pouvez ajouter la section [color] au projet ‘ s .git / config file aussi
- Et vous peut simplement définir une variable de configuration pour un seul appel dune commande git: stackoverflow.com/a/18304605/134044
Réponse
Vous voudrez probablement utiliser
git config --global color.ui auto
Le auto
dit que git nessaiera dutiliser la couleur que sur les terminaux qui le supportent, et vous nobtiendrez 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 cest également la valeur par défaut depuis Git 1.8.4.
La color.ui
est une méta-configuration qui inclut toutes les différentes configurations color.*
disponibles avec les commandes git.
Ceci est expliqué en profondeur dans git help config
.
Commentaires
- Pouvez-vous expliquer la différence entre color.ui
true
(vers lequel pointeauto
) par rapport àalways
? Jai lu la documentation mais je ne comprends toujours pas la différence. - @chharvey
color.ui = auto
+git diff | less
– pas de couleurs,color.ui = always
+git diff | less
– sortie colorée.LESS=-R
est implicite.
Réponse
git config --global color.ui auto git config --global color.branch auto git config --global color.status auto
Commentaires
- FYI, seulement cela a fonctionné pour la version 1.5.2.1 de git, les autres réponses nont pas ‘ t.
Réponse
La réponse acceptée donne la solution la plus courante. Si, pour une raison quelconque, vous navez 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, non pris en charge sur git 1.7.1.
Commentaires
- Pour toute autre personne essayant dobtenir de la couleur en passant dans
less
comme je viens de le faire, vous pouvez créerless
transmettez les caractères déchappement de couleur au terminal vialess -R
. - Quand cette fonctionnalité a-t-elle été ajoutée?
Réponse
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
Réponse
ou désactivez tout / presque toute 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
Commentaires
- OP ne ‘ ne cherchait pas à désactiver les couleurs, plutôt qu’à activer les couleurs . Dans le PO, il a indiqué comment faire pour
git
et il veut un moyen de le faire dans un sens plus global. Si vous connaissez une telle méthode, veuillez modifier votre réponse pour lexpliquer. - Parfois, les gens recherchent quelque chose de proche mais légèrement différent – mais merci pour le vote défavorable.
- Jai aimé it @theRiley
Réponse
Pour un git diff
coloré dans less
, cela fonctionne:
git -c color.diff=always diff [...] | less -R
Réponse
Vous pouvez le faire avec Coleur de sortie de commande arbitraire . Cela fonctionne principalement, mais je nai pas trouvé comment contourner un bogue où les invites qui attendent une entrée ne sont pas affichées et vous ne pouvez pas simplement taper lentré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
.
Commentaires
- Pouvez-vous partager votre configuration pour
acoc
? - Nvm, cétait facile à écrire. 🙂 Ajouté à la réponse.
Réponse
Je sais que le message date de quatre ans, mais personne na répondu de mon camp, le daltonien. Si vous le pouvez distinguer les couleurs, ignorer 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) un fond blanc) et gris moyen pour un dded (orge lisible sur fond noir, illisible sur fond blanc). Javais lhabitude de basculer larrière-plan de la fenêtre de mon terminal vers / depuis le 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.
Commentaires
- Vous pouvez également modifier la configuration pour que tout ne soit pas coloré par défaut (
color.ui = never
).
Réponse
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 ANSI Codes de 256 couleurs. Pour plus de détails, consultez man git config
.
Réponse
Jetez un œil à https://github.com/dandavison/delta pour la coloration syntaxique du langage de la sortie (git) diff, et la coloration colorée des lignes ajoutées / supprimées dans le diff .