tag - tipos de etiquetas en git
El resultado más corto posible del registro de git que contiene autor y fecha (11)
¿Cómo puedo mostrar una salida de registro de git con (al menos) esta información:
* author
* commit date
* change
Lo quiero comprimido a una línea por entrada de registro. ¿Cuál es el formato más corto posible para eso?
(intentado --format=oneline
pero eso no muestra la fecha)
Ejecutar esto en la carpeta del proyecto:
$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all
Y si lo desea, agregue esta línea a su ~ / .gitconfig:
[alias]
...
list = log --pretty=format:/"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn/" --graph --all
Para mostrar los compromisos que he puesto en escena que están listos para empujar lo hago
git log remotes/trunk~4..HEAD --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" --date=short | awk -F''/t'' ''{gsub(/[, ]/,"",$2);gsub(/HEAD/, "/033[1;36mH/033[00m",$2);gsub(/master/, "/033[1;32mm/033[00m",$2);gsub(/trunk/, "/033[1;31mt/033[00m",$2);print $1 "/t" gensub(/([/(/)])/, "/033[0;33m//1/033[00m","g",$2) $3}'' | less -eiFRXS
La salida se ve algo así como:
ef87da7 2013-01-17 haslers (Hm)Fix NPE in Frobble
8f6d80f 2013-01-17 haslers Refactor Frobble
815813b 2013-01-17 haslers (t)Add Wibble to Frobble
3616373 2013-01-17 haslers Add Foo to Frobble
3b5ccf0 2013-01-17 haslers Add Bar to Frobble
a1db9ef 2013-01-17 haslers Add Frobble Widget
Donde la primera columna aparece en amarillo, y la ''H'' ''m'' y ''t'' en la parentesis muestran la CABEZA, el maestro y el tronco y aparecen en sus colores habituales "--decorate"
Aquí está con saltos de línea para que pueda ver lo que está haciendo:
git log remotes/trunk~4..HEAD --date=short
--pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s"
| awk -F''/t'' ''{
gsub(/[, ]/,"",$2);
gsub(/HEAD/, "/033[1;36mH/033[00m",$2);
gsub(/master/, "/033[1;32mm/033[00m",$2);
gsub(/trunk/, "/033[1;31mt/033[00m",$2);
print $1 "/t" gensub(/([/(/)])/, "/033[0;33m//1/033[00m","g",$2) $3}''
Me he aliado a "puesta en escena" con:
git config alias.staged ''!git log remotes/trunk~4..HEAD --date=short --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" | awk -F"/t" "{gsub(/[, ]/,/"/",/$2);gsub(/HEAD/, /"/033[1;36mH/033[00m/",/$2);gsub(/master/, /"/033[1;32mm/033[00m/",/$2);gsub(/trunk/, /"/033[1;31mt/033[00m/",/$2);print /$1 /"/t/" gensub(/([/(/)])/, /"/033[0;33m/////1/033[00m/",/"g/",/$2) /$3}"''
(¿Hay una forma más fácil de escapar de eso? Fue un poco difícil resolver lo que necesitaba escapar)
Siéntase libre de usar este:
git log --pretty="%C(Yellow)%h %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s"
Mira:
Todas las sugerencias mencionadas utilizan %s
marcador de posición %s
para el tema. Recomendaré usar %B
porque %s
formato de %s
conserva las nuevas líneas y el mensaje de confirmación de varias líneas aparece aplastado.
git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
Use un alias de git predefinido, es decir:
$ git work
Creado una vez por comando:
$ git config --global alias.work ''log --pretty=format:"%h%x09%an%x09%ad%x09%s"''
https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases
O más coloreado con gráfico:
$ git config --global alias.work ''log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all''
Yo uso estas dos configuraciones .gitconfig:
[log]
date = relative
[format]
pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
% ad es la fecha del autor, que se puede anular mediante --date
o la opción especificada en la stanza [log] en .gitconfig. Me gusta la fecha relativa porque da una sensación inmediata de cuándo se cometieron las cosas. La salida se ve así:
6c3e1a2 2 hours ago [email protected] lsof is a dependency now.
0754f18 11 hours ago [email protected] Properly unmount, so detaching works.
336a3ac 13 hours ago [email protected] Show ami registration command if auto register fails
be2ad45 17 hours ago [email protected] Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago [email protected] Shorten while loops
Por supuesto, todo esto es en color, por lo que es fácil distinguir las distintas partes de una línea de registro. También es el valor predeterminado al escribir git log
debido a la sección [formato].
ACTUALIZACIÓN 2014: Ya que git ahora soporta relleno, tengo una buena enmienda a la versión anterior:
pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s
Esta derecha alinea las fechas relativas y la izquierda alinea los nombres de los comensales, lo que significa que obtienes una apariencia de columna que es fácil para los ojos.
Captura de pantallaACTUALIZACIÓN 2016: Ya que la firma de compromiso GPG se está convirtiendo en una cosa, pensé que actualizaría esta publicación con una versión que incluye verificación de firma (en la captura de pantalla es la letra magenta justo después de la confirmación). Una breve explicación de la bandera:
% G ?: muestra "G" para una buena firma (válida), "B" para una mala firma, "U" para una buena firma con validez desconocida y "N" para ninguna firma
Otros cambios incluyen:
- los colores ahora se eliminan si la salida es diferente a tty (lo cual es útil para grepping, etc.)
-
git log -g
ahora contiene el selector de reflog. - Guarde 2 parens en refnames y póngalos al final (para preservar la alineación de la columna)
- Truncar las fechas relativas si son demasiado largas (por ejemplo,
3 years, 4..
) - Truncar los nombres de los comités (puede ser un poco corto para algunas personas, solo cambie el
%<(7,trunc)
o consulte la función git .mailmap para acortar los nombres de los comensales)
Aquí está la configuración:
pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D
En general, la alineación de la columna ahora se conserva mucho mejor a expensas de algunos caracteres (con suerte) inútiles. Siéntase libre de editar si tiene alguna mejora, me encantaría que el color del mensaje dependiera de si un compromiso está firmado, pero no parece que sea posible un cajero automático.
Captura de pantalla git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
hizo el trabajo Esto produce:
fbc3503 mads Thu Dec 4 07:43:27 2008 +0000 show mobile if phone is null...
ec36490 jesper Wed Nov 26 05:41:37 2008 +0000 Cleanup after [942]: Using timezon
ae62afd tobias Tue Nov 25 21:42:55 2008 +0000 Fixed #67 by adding time zone supp
164be7e mads Tue Nov 25 19:56:43 2008 +0000 fixed tests, and a ''unending appoi
93f1526 jesper Tue Nov 25 09:45:56 2008 +0000 adding time.ZONE.now as time zone
2f0f8c1 tobias Tue Nov 25 03:07:02 2008 +0000 Timezone configured in environment
a33c1dc jesper Tue Nov 25 01:26:18 2008 +0000 updated to most recent will_pagina
Inspirado en la pregunta : "git log output como svn ls -v" , descubrí que podía agregar los parámetros exactos que necesitaba.
Para acortar la fecha (sin mostrar la hora) use --date=short
En caso de que tuvieras curiosidad por saber cuáles eran las diferentes opciones:
%h
= hash de cometer abreviado
%x09
= tabulación (carácter para el código 9)
%an
= nombre del autor
%ad
= fecha de autor (formato respeta - fecha = opción)
%s
= sujeto
De kernel.org/pub/software/scm/git/docs/git-log.html (sección PRETTY FORMATS) por el comentario de Vivek.
tig es una posible alternativa al uso del comando git log , disponible en las principales distribuciones de código abierto * nix.
En debian o ubuntu, intente instalar y ejecutar de la siguiente manera:
$ sudo apt-get install tig
(se instala tig)
$ tig
(el registro se muestra en el paginador de la siguiente manera, con el hash de confirmación actual en la parte inferior)
2010-03-17 01:07 ndesigner changes to sponsors list
2010-03-17 00:19 rcoder Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder Sponsors page now shows sponsors'' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)
Como markdown no admite colorear texto, imagine: columna 1: azul; columna 2: verde; columna 3: color de texto predeterminado. Última línea, resaltada. Pulsa Q o q para salir.
tig
justifica las columnas sin bordes irregulares , lo que no garantiza una pestaña ascii (% x09).
Para un formato de fecha corta, presione D mayúscula (nota: minúscula d abre una vista de diferencia). Configúrelo permanentemente agregando show-date = short
to ~ / .tigrc; o en una sección [tig]
en .git / configure o ~ / .gitconfig.
Para ver un cambio completo :
- pulsa enter . Se abrirá un panel secundario en la mitad inferior de la ventana.
- use las teclas k , j para desplazar el cambio en el panel secundario.
- al mismo tiempo, use las teclas arriba y abajo para pasar de la confirmación a la confirmación.
Dado que tig es independiente de git y aparentemente * nix específico, es probable que requiera que cygwin se instale en Windows. Pero para fedora , creo que los comandos de instalación son $ su
, (enter root password)
, # yum install tig
. Para freebsd, intente % su
, (enter root password)
, # pkg_add -r tig
.
Por cierto, tig es bueno para mucho más que una vista rápida del registro: Screenshots y Manual
git log --pretty=format:"%H %an %ad"
use --date=
para establecer un formato de fecha
git log --pretty=format:"%H %an %ad" --date=short
git log --pretty=format:''%h %ad %s%x09%ae'' --date=short
Resultado:
e17bae5 2011-09-30 Integrate from development -> main [email protected]
eaead2c 2011-09-30 More stuff that is not worth mentioning [email protected]
eb6a336 2011-09-22 Merge branch ''freebase'' into development [email protected]
Las cosas de ancho constante son las primeras. La parte menos importante, el dominio de correo electrónico, es la última y fácil de filtrar.
git log --pretty=format:''%h %ad %s (%an)'' --date=short
o
git log --pretty=format:''%h %ad %s | %an'' --date=short
... refiriéndome a la respuesta de cdunn2001 anterior: perdería el correo electrónico del autor e incluiría solo el nombre del autor, según Jesper y knittl, pero siguiendo la idea de cdunn2001 de mantener la producción en columnas de ancho constante para facilitar la lectura ( ¡gran idea!). Sin embargo, en lugar de una columna justificada a la izquierda separada para el nombre del autor, envuelvo esa bandera al final de la orden con un paréntesis o la compensa con una canalización. (Podría ser realmente cualquier carácter que sirva de ayuda visual para leer la salida ... aunque podría tener sentido evitar barras diagonales hacia delante o hacia atrás para reducir la confusión de la salida con un directorio o algo así).
Salida de muestra:
6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac