git log se comporta como menos

3

git log -{n}, cuando -nes lo suficientemente pequeño, no se abre less, simplemente lo imprime en la pantalla. Eso es deseable. git log -1No debería ocupar la pantalla completa.

Desafortunadamente, en el shell bash de MINGW, después de ejecutar un comando que no es git, se git logcomporta como si lo hubiera ejecutado lessy empujado q. (en otras palabras, los datos se imprimen en la parte inferior de la pantalla y termino con una pila de espacios en blanco en la parte superior).

Demo imaginaria (por favor, perdona su duración):

>> clear









>> git log -1




commit 123123...
Author: CPfohl
Date: {today}
    {Message}

>> git log -1
commit 123123...
Author: CPfohl
Date: {today}
    {Message}

Esto funciona sin importar qué comando git ejecute antes git log, siempre que git log -{n}sea después de un comando git.

¿Es esto un error o hay una manera de hacer que esto se comporte normalmente?

Crisfole
fuente

Respuestas:

3

Si desea deshabilitar la paginación para algunos / todos los comandos git puede:

  • establecer el valor de configuración ( pager.<cmd>o core.pagerpara todos los comandos) encat
  • --no-pageropción de uso

Pero tal vez no he entendido tu pregunta. El comportamiento descrito se debe alterar configurando el comando de paginación apropiado ( lesscon algunas opciones) en las opciones de configuración mencionadas anteriormente.

Martin Vejmelka
fuente
¿Qué sucede si solo quiero hacer esto cuando ejecuto git log con una -nopción?
Crisfole
Puede intentar agregar un alias de comando (incluida la opción -n) y usar ese alias pager.alias_name = less .... Pero no sé si el alias se puede usar como comando en la opción de configuración mencionada.
Martin Vejmelka
2
- ¡La opción sin buscapersonas funciona de maravilla! Pero parece que --no-pager necesita ser suministrado antes de "iniciar sesión" para que funcione. Debe actualizar la respuesta para aclarar esto. "git log ... --no-pager" no funciona, mientras que "git --no-pager log ..." sí.
CoolMcGrrr
0

O también podría definir un alias en su archivo de configuración de git que le permita mostrar el registro de una manera especial, si ingresa los siguientes comandos, por ejemplo, configura .gitconfig para editarlo con Sublime Text 3:

git config --global core.editor "'c:/Program Files/Sublime Text 3/sublime_text.exe'" -w

git config --global alias.showconfig "config --global -e"

Además, puede agregar un alias en git para mostrarle las últimas confirmaciones en todas las ramas de un repositorio:

Agregue [alias] si falta en .gitconfig, luego:

latest = "!f() { echo "Latest \"${1:-11}\" commits accross all branches:"; git log  --abbrev-commit --date=relative --branches --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' -n ${1:-11};  } ; f"

El alias aquí usa una función de shell con un parámetro establecido en una variable de shell. Si no especifica un valor de parámetro, el alias usará 11 como valor predeterminado (la sintaxis podría interpretarse fácilmente con -11, pero la sintaxis $ {1: -11} significa el primer parámetro en el shell y establecer un valor predeterminado valor para el parámetro si falta. Un poco como los valores predeterminados en C # o los parámetros predeterminados en Powershell.

Como puede ver, el alias que le damos a git puede contener múltiples comandos, separados por un punto y coma.

Probé esto ejecutando git latest y git latest 3 en la captura de pantalla de salida de muestra a continuación. Ves mi edición de mi configuración de git a la izquierda.

Con las funciones de shell y los alias podemos hacer mucho más con Git sin tener que escribir mucho. La sintaxis de las funciones de shell sigue las reglas de BASH y se puede usar también en un entorno Windows con CMD.

ingrese la descripción de la imagen aquí

Tore Aurstad
fuente