unstaged - ¿Cómo hacer que git diff escriba a stdout?
git format-patch (3)
Por defecto, git diff
imprime todas las líneas +-
en stdout, pero tengo una máquina (devian) (que conecto a través de ssh) donde git diff
me lleva a un editor (que no sé cuál es) y necesito presionar q para continuar.
Tengo la configuración de Checker Git y parece:
$ git config --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=XXX
branch.master.remote=origin
branch.master.merge=refs/heads/master
$ git config --global --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
$ git config --system --list
''/etc/gitconfig'': No such file or directory
¿Hay un lugar que me estoy perdiendo? Tal vez la herramienta desconocida es una alternativa o algo así porque a mi máquina le falta algo. Cualquier ayuda es apreciada. Gracias.
El siguiente valor de core.pager
usa less
, que imprime en stdout, y también tiene funcionalidad de buscapersonas (si es necesario), lo que permite desplazarse hacia arriba y hacia abajo (a diferencia de cat
):
$ git config --global core.pager "less -FRSX"
Se cierra de inmediato si el diferencial se ajusta en la primera pantalla ( -F
), emite caracteres de control sin procesar ( -R
), corta líneas largas en lugar de envolver ( -S
) y no utiliza cadenas de inicio / deinit de termcap ( -X
).
Por defecto, Git envía su salida de diff (y generalmente cualquier salida que puede ser más que una pantalla) al localizador del sistema, que es una utilidad que imprime solo una pantalla de salida a la vez. Si desea deshabilitar el buscapersonas cuando ejecuta un comando, pase --no-pager
a Git:
$ git --no-pager <subcommand> <options>
Esto se puede ejecutar para cualquier comando de Git.
Si desea desactivarlo de forma predeterminada solo para diff , puede configurar el buscapersonas diff ejecutando:
$ git config pager.diff false
Si desea desactivarlo de forma predeterminada para todos los comandos , puede configurar el localizador de Git en cat
ejecutando:
$ git config --global core.pager cat
También puede usar cat
para cualquier comando de git
si no le importan los colores.
Así que git diff | cat
git diff | cat
para tu caso.
Editar: como se señala en los comentarios, si le interesan los colores, utilice:
git diff --color | cat