¿Hay alguna forma de colorear la salida para git (o cualquier comando)?
Considere:
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
Y
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 #
El resultado se ve igual, pero la información es totalmente diferente: el archivo ha pasado de no preparado a preparado para su confirmación.
¿Hay alguna manera de colorear la salida? Por ejemplo, los archivos que no están organizados son rojos y los archivos organizados son verdes.
¿O incluso Changes not staged for commit:
a rojo y # Changes to be committed:
a verde?
Trabajando en Ubuntu.
EDITAR: Google encontró esta respuesta que funciona muy bien: git config --global --add color.ui true
.
Sin embargo, ¿existe alguna solución más general para agregar color a un salida de comando?
Comentarios
- ¿Quieres algo que coloree todas las salidas de comando? ¿Cómo sabría qué partes colorear?
- Supongo que si hubiera una manera de configurarlo usando expresiones regulares: cada color podría tener una expresión regular de inicio. Y podría haber una expresión regular de color predeterminada para desactivar todos los colores. Y, si aparece el texto » foo «, muéstrelo en un color determinado …
Respuesta
Puede crear una sección [color]
en su ~/.gitconfig
con por ejemplo el siguiente contenido
[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true
También puede controlar con precisión lo que desea colorear de qué manera, por ejemplo,
[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow
Espero que esto te ayude a empezar. Y, por supuesto, necesitas una terminal que admita color.
Comentarios
- Creo que podría valer la pena poner git config –global color.ui auto (@Evgeny ‘ s respuesta) en la parte superior de la suya … Creo que ‘ probablemente sea lo que la mayoría de la gente es Buscando. Yo ‘ he votado a favor de ambos … Yo ‘ solo digo, por el bien de Internet tal como viene aquí, creo que mucha gente solo quiere ese simple trazador de líneas. Mejor si lo consiguen, además de su bondad adicional.
- Esto funcionó perfectamente para mí. En la sección
[color "status"]
agreguébranch = yellow
. - también puede agregar la sección [color] al archivo ‘ s .git / config
- Y usted puede simplemente establecer una variable de configuración para una sola invocación de un comando git: stackoverflow.com/a/18304605/134044
Respuesta
Probablemente desee utilizar
git config --global color.ui auto
El auto
dice que git solo intentará usar color en terminales que lo admitan, y no obtendrá secuencias ANSI si redirige la salida de los comandos git a un archivo, por ejemplo. Establecerlo en true
es lo mismo que auto
, y también es el valor predeterminado desde Git 1.8.4.
La color.ui
es una metaconfiguración que incluye todas las diversas color.*
configuraciones disponibles con los comandos git.
Esto se explica en profundidad en git help config
.
Comentarios
- ¿Puede explicar la diferencia entre color.ui
true
(a la queauto
apunta) versusalways
? Leí los documentos pero todavía no entiendo la diferencia. - @chharvey
color.ui = auto
+git diff | less
– sin colores,color.ui = always
+git diff | less
– salida en color.LESS=-R
está implícito.
Respuesta
git config --global color.ui auto git config --global color.branch auto git config --global color.status auto
Comentarios
- Para su información, solo esto funcionó para la versión 1.5.2.1 de git, otras respuestas no ‘ t.
Respuesta
La respuesta aceptada da la solución más común. Si por alguna razón no necesita cambiar permanentemente la configuración, lo que hace esa solución, puede anular la configuración para un solo comando git:
git -c color.ui=always <usual git command and options>
Por ejemplo :
git -c color.ui=always status git -c color.ui=always diff
Probado: compatible con git 2.4.6, no compatible con git 1.7.1.
Comentarios
- Para cualquier otra persona que intente obtener color al ingresar a
less
como acabo de hacer, puede hacerless
pasar los caracteres de escape de color a la terminal a través deless -R
. - ¿Cuándo se agregó esta función?
Responder
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
Responder
o desactiva toda / la mayor parte de la coloración a través de:
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
Comentarios
- OP no ‘ t buscaba desactivar colores, en lugar de activar colores . En el OP, indicó cómo hacerlo para
git
y quiere alguna forma de hacerlo en un sentido más global. Si conoce un método de este tipo, edite su respuesta para explicarlo. - A veces, las personas buscan algo muy relacionado pero ligeramente diferente, pero gracias por el voto negativo.
- Me gustó it @theRiley
Respuesta
Para un git diff
coloreado en less
, esto funciona:
git -c color.diff=always diff [...] | less -R
Respuesta
Puede hacer esto con Arbitrary Command Output Colourer . En general, funciona, pero no he descubierto cómo solucionar un error en el que no se muestran los mensajes que esperan entrada y no se puede simplemente escribir la entrada necesaria conocida y presionar enter para continuar en todos los casos.
Ejemplo de ~/.acoc.conf
para git
:
# git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red
. .que funciona muy bien junto con alias git="acoc git"
en .bash_profile
.
Comentarios
- ¿Puedes compartir tu configuración para
acoc
? - Nvm, fue fácil de escribir. 🙂 Agregado a la respuesta.
Responder
Sé que la publicación tiene cuatro años, pero nadie respondió desde mi campamento, los daltónicos. Si puedes distinguir colores, ignorar mi publicación.
«git status», por ejemplo, muestra texto blanco sobre fondo / negro sobre fondo blanco (legible), gris oscuro para eliminado (ilegible contra un fondo negro pero legible contra un fondo blanco) y gris medio para un dded (cebada legible sobre fondo negro, ilegible sobre fondo blanco). Solía alternar el fondo de la ventana de mi terminal a / desde blanco / negro para poder leer el texto ilegible. Una solución simple es más:
git status | more
Esto hace que todo el texto sea legible en una ventana de terminal con fondo blanco o negro estándar.
Comentarios
- También puedes cambiar la configuración para que todo no tenga color por defecto (
color.ui = never
).
Respuesta
Para colorear la salida de git diff
puede agregar una sección color.diff a ~ / .gitconfig. Por ejemplo:
[color "diff"] new = bold italic 154 old = bold italic 196
Aquí 154
y 196
son ANSI Códigos de 256 colores. Para obtener más detalles, consulte man git config
.
Respuesta
Eche un vistazo a https://github.com/dandavison/delta para resaltar la sintaxis del lenguaje en color de la salida (git) diff y resaltar en color las líneas agregadas / eliminadas en el diff .