specific pretty oneline one log examples git git-log

oneline - git log pretty



Color en git-log (4)

Cuando ejecuta git log --decorate --pretty=oneline la salida tendrá entradas como (HEAD, refs/published/master, master) con coloración.

También tengo lo siguiente en mi gitconfig:

[color "branch"] current = yellow reverse local = yellow remote = green

¿Cómo se replican esos colores al hacer un formato personalizado como el siguiente?

git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"


A partir de git 1.8.3 (24 de mayo de 2013), puede usar %C(auto) para decorar %d en la cadena de formato de git log de git log .

De las notas de la versión :

* "git log --format" specifier learned %C(auto) token that tells Git to use color when interpolating %d (decoration), %h (short commit object name), etc. for terminal output.)


El git log --decorate pondrá por defecto:

  • la CABEZA en cian
  • las ramas remotas en rojo
  • la etiqueta en verde

y se puede cambiar a través de color.decorate config.

Pero el git log --format no ofrece una manera de mostrar específicamente el HEAD o los controles remotos o la bifurcación: los tres se muestran a través de %d , con un color posible.

Actualización de mayo de 2013, como se menciona a continuación por (votada), git 1.8.3 ofrece una opción más:

git log –format ahora tiene un token %C(auto) que le dice a Git que use color cuando resuelve %d (decoración), %h (nombre de objeto de confirmación corto), etc. para la salida del terminal.

Esta entrada de blog de Atlassian comenta que esta característica es parte de varias otras centradas en el formato ( git rebase , git count-objects ) y colores ( git branch -vv )

Esto viene además del auto,reset anterior auto,reset de 1.8.2 , que deshabilita automáticamente los colores cuando la salida no se usa para un terminal1

%C(auto,blue)Hello%C(auto,reset)

Nota: git 2.4+ (Q2 2015) hará un mejor trabajo al restablecer el color alrededor de los nombres de las sucursales.
Ver commit 5ee8758 por Junio ​​C Hamano ( gitster ) :

log --decorate : no se log --decorate color "commit" en el siguiente elemento

En " git log --decorate ", vería el encabezado de confirmación así:

commit ... (HEAD, jc/decorate-leaky-separator-color)

donde " commit ... ( " está pintado en color.diff.commit , " HEAD " en color.decorate.head , " , " en color.diff.commit , el nombre de la rama en color.decorate.branch y luego se cierra " ) "en color.diff.commit .

Si quisiera pintar el HEAD y el nombre de la sucursal local con el mismo color que el texto del cuerpo (tal vez porque el cian y el verde son demasiado débiles en un terminal negro sobre blanco para ser legible), no querría tener que decir

[color "decorate"] head = black branch = black

porque no podría volver a usar la misma configuración en un terminal blanco sobre negro. Usted ingenuamente esperaría

[color "decorate"] head = normal branch = normal

para trabajar, pero desafortunadamente no.
Pinta la cadena " HEAD " y el nombre de la rama en el mismo color que el paréntesis de apertura o la coma entre los elementos de decoración.
Esto se debe a que el código olvida restablecer el color después de imprimir el "prefijo" en su propio color.

Tenga en cuenta que git 2.5 (Q2 2015) soluciona un error:

Ver commit 429ad20 por Junio ​​C Hamano ( gitster ) , 13 de mayo de 2015.
(Fusionada por Junio ​​C Hamano - gitster - en el compromiso fd70780 , 22 de mayo de 2015)

log : no acortar los nombres de decoración demasiado temprano

La mejora " log --decorate " en Git 2.4 que muestra la confirmación en la punta de la rama actual, por ejemplo " HEAD -> master ", no funcionó con --decorate = full.

Git 2.9.x + (Q3 2016) arreglará otro error y honor color=auto para %C(auto)

Git 2.10.2 (octubre de 2016) corrige otros errores con la confirmación 82b83da (29 de septiembre de 2016) y confirma c99ad27 (17 de septiembre de 2016) por René Scharfe (``) .
(Fusionada por Junio ​​C Hamano - gitster - in commit 76796d4 , 28 de octubre de 2016)

pretty : evite agregar reinicio para %C(auto) si la salida está vacía

Emitimos una secuencia de escape para restablecer el color y el atributo para %C(auto) para asegurarnos de que la coloración automática se muestra como se esperaba.
Deje de hacer eso si el strbuf de salida está vacío , es decir, cuando %C(auto) aparece al comienzo de la cadena de formato, porque entonces no hay necesidad de un restablecimiento y guardamos algunos bytes en la salida.

pretty : dejar %C(auto) restablecer todos los atributos

Restablezca colores y atributos en %C(auto) para permitir un control automático total sobre ellos; de lo contrario, los atributos como negrita o inversa aún podrían estar vigentes en los marcadores de posición %C anteriores .


Entrelazarlos entre paréntesis:

%C(...): color specification, as described in color.branch.* config option

Entonces, %C(yellow reverse) funcionaría.


La opción de configuración log.decorate puede activar / desactivar las decoraciones predeterminadas en los registros.

git config --global log.decorate full

Una vez hecho esto, puedes usar color.decorate.* Para jugar con los colores