¿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 que auto apunta) versus always? 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 hacer less pasar los caracteres de escape de color a la terminal a través de less -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 .

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *