Quando uso il comando git branch
per elencare tutti i rami, vedo l’output di git branch | less
git branch | less
.
Il comando git branch
dovrebbe mostrare un elenco di rami, come ls
fa per i file.
Questo è l’output che ottengo:
Come ottengo il comportamento predefinito del git branch
? Cosa causa l’uscita paginata?
Sto usando ZSH con oh_my_zsh
(niente per Git in là), e il mio .gitconfig
questo aspetto:
[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
Come accennato in precedenza, questo era un cambiamento di comportamento predefinito introdotto in Git 2.16 .
Per impostazione predefinita, è ansible distriggersre l’uscita cercapersone per il git branch
con l’ impostazione di configurazione pager.branch
:
git config --global pager.branch false
Come indicato da altre risposte, git fa il default per eseguire il piping stesso in un cercapersone ( less
di default) per la maggior parte dei comandi.
Un punto importante, tuttavia, è che quando la variabile di ambiente LESS non è impostata, Git la imposta su FRX , e la conseguenza è che il comportamento visibile all’utente è lo stesso che se il cercapersone non fosse usato quando l’output del comando è breve (es. se hai solo pochi rami). Vedi meno uomo :
-F o – buon-se-uno-schermo
Fa sì che meno esca automaticamente se l’intero file può essere visualizzato nella prima schermata.-R o –RAW-CONTROL-CHARS
[…] Le sequenze di escape “a colors” ANSI vengono visualizzate in forma “raw”.-X o –no-init
Disabilita l’invio delle stringhe di inizializzazione e deinitializzazione del termcap al terminale. A volte ciò è desiderabile se la stringa di deinitializzazione fa qualcosa di non necessario, come la pulizia dello schermo.
Se ottieni il comportamento che descrivi, molto probabilmente hai $LESS
impostato su qualcos’altro, e disinserendo il sistema si eliminerebbe il problema mantenendo il comportamento del “cercapersone” per un output lungo. In alternativa, puoi triggersre il comportamento mantenendo $LESS
as-is aggiungendo questo al tuo file .gitconfig
:
[core] pager = less -FRX
Se non ti piace la cosa del cercapersone, puoi distriggersrla globalmente o in base al comando (vedi altre risposte).
Non per argomentare la semantica, ma il comportamento che ottieni è quello predefinito. Ecco perché lo ottieni quando non chiedi qualcosa di diverso. Per impostazione predefinita, branch
(e numerosi altri comandi git) usano un cercapersone quando inviano l’output al terminale.
È ansible sovrascrivere questo valore predefinito usando l’opzione --no-pager
git --no-pager branch
O se si reindirizza l’output a un file, git dovrebbe rilevare che non sta scrivendo su un terminale e quindi non dovrebbe comunque usare un cercapersone. (D’altra parte, ciò suggerisce un caso d’uso di script, nel qual caso dovresti considerare di usare un comando plumbing come git for-each-ref
in preferenza per git branch
.)
https://git-scm.com/book/gr/v2/Git-Internals-Environment-Variables
GIT_PAGER controlla il programma utilizzato per visualizzare l’output multipagina sulla riga di comando. Se non è impostato, PAGER verrà utilizzato come riserva.
Per risolvere il tuo problema, potresti rimuovere PAGER e GIT_PAGER nella tua shell.