Cuando uso el git branchcomando para enumerar todas las ramas, veo el resultado de git branch | less.
Se git branchsupone que el comando muestra una lista de ramas, como lo lshace para los archivos.
Este es el resultado que obtengo:
¿Cómo obtengo el comportamiento predeterminado de git branch? ¿Qué causa la salida paginada?
Estoy usando ZSH con oh_my_zsh(nada para Git allí), y mi .gitconfigaspecto es el siguiente:
[user]
email = [email protected]
name = Dennis Haegler
[push]
default = simple
[merge]
tool = vimdiff
[core]
editor = nvim
excludesfile = /Users/dennish/.gitignore_global
[color]
ui = true
[alias]
br = branch
ci = commit -v
cam = commit -am
co = checkout
df = diff
st = status
sa = stash
mt = mergetool
cp = cherry-pick
pl = pull --rebase
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh
\"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true


git branchcon otra cosa. Mediante la detección de tuberías , Git generará la lista de ramificaciones para stdout dentro de los comandosgit branch > branches.txtogit branch | wc -l.ESC/qdespués de un simplegit branchcheque.less, puede agregar--no-init --quit-if-one-screena suLESSvariable de entorno, lo que harálessque simplemente escriba en stdout si el texto se puede ver sin desplazarse. Verman lesspara más detalles.[pager] branch = false(en dos líneas).Como señalaron otras respuestas, Git se conecta de forma predeterminada a un buscapersonas (
lesspor defecto) para la mayoría de los comandos.Sin embargo, un punto importante es que cuando la variable de entorno LESS no está configurada, Git la establece en FRX , y la consecuencia es que el comportamiento visible del usuario es el mismo que si el localizador no se usara cuando la salida del comando es corta (es decir, si solo tienes pocas ramas). Ver hombre menos :
Si obtiene el comportamiento que describe, lo más probable es que haya
$LESSestablecido algo más, y desarmarlo (unset LESS) eliminaría el problema y mantendría el comportamiento de "buscapersonas" para una salida larga. Alternativamente, puede activar el comportamiento mientras se mantiene$LESScomo está agregando esto a su.gitconfigarchivo:Si realmente no le gusta el buscapersonas, puede desactivarlo globalmente o por orden (ver otras respuestas).
fuente
No es para discutir la semántica, pero el comportamiento que está obteniendo es el predeterminado. Es por eso que lo obtienes cuando no pides algo diferente. Por defecto,
branch(y muchos otros comandos Git) usan un buscapersonas cuando envían la salida al terminal.Puede anular este valor predeterminado utilizando la
--no-pageropción:O si redirige la salida a un archivo, Git debería detectar que no está escribiendo en un terminal y, por lo tanto, no debería usar un localizador de todos modos. (Por otro lado, eso sugiere un caso de uso de secuencias de comandos, en cuyo caso debería considerar usar un comando de plomería como
git for-each-refpreferenciagit branch).fuente
git --no-pager branchtrabajos. Pero, ¿cómo se establece esto? Solo laPAGERvariable de entorno se establece enless. Este no es el comportamiento predeterminado. Todos mis colegios tienen una salida como una lista impresa en la terminal.Este comportamiento de Git fue cada vez más molesto para mí también. Obtuve mi lista de etiquetas
lesscuando solo quería listar etiquetas, por ejemplo.Uno puede controlar este comportamiento también cambiando el Git PAGER predeterminado a en
catlugar deless. Prefiero desplazarme en iTerm que en un editor. Me gusta usar el editor cuando quiero.Entonces:
fuente
git loges molesto. Simplemente extraño el comportamiento original, pero no tuve tiempo para mejorar mi flujo de trabajo diario en esta perspectiva.git log...Para aquellos que quieran actualizar su
~/.gitconfigpara solucionar esto, se vería así:fuente
git config --list --show-origindepurar qué configuraciones están / no están establecidas para usted / su sistema y desde dónde ( stackoverflow.com/q/12254076/1590950 ).Porque Git por defecto abre la salida en buscapersonas (al menos en Ubuntu). La respuesta aceptada reemplazará por completo el buscapersonas, lo que puede no gustarle si su salida es muy larga.
Recomendaría reemplazar el localizador por
less, para que no "desplace" las salidas a menos de la altura del terminal.fuente
Haz lo siguiente:
fuente
La respuesta aceptada parece incorrecta. Hay dos problemas:
git branchno se use siempre un buscapersonas, lo que no será deseable cuando haya mucha salida.La verdadera razón es que bash y zsh tienen definiciones predeterminadas diferentes sobre MENOS: bash no define nada, mientras que zsh lo define
-R. Cuando lo hagounset LESSen zsh, todo vuelve a la normalidad ...El
-Rcomportamiento aún puede ser deseado. En ese caso, puede agregar las siguientes instrucciones a su .zshrc para que todo funcione:-F'hace que menos salga automáticamente si se puede mostrar todo el archivo en la primera pantalla'. Sin embargo,-Xdebe especificarse simultáneamente, de lo contrario, no se mostrará ninguna salida cuando haya menos de una pantalla llena de salida.fuente
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
Para resolver su problema, puede desarmar PAGER y GIT_PAGER en su shell.
fuente
PAGER(GIT_PAGERestaba desarmado) sigue ahí. ¿Hay alguna ubicación en la que deba verificar este entorno?PAGER= git branch(con un espacio después y ninguno antes del signo igual exactamente como está escrito). Ni idea, si es mejor que cualquiera, por ejemplo,git branch | cat.He tenido el mismo problema
git statusy logit config --global pager.status falseresuelve también.fuente