Lorsque j'utilise la commande git branch
pour répertorier toutes les branches, la sortie de git branch | less
s'affiche.
La commande git branch
est censée afficher une liste de branches, comme le fait ls
pour les fichiers.
Voici le résultat obtenu:
Comment puis-je obtenir le comportement par défaut de git branch
? Qu'est-ce qui cause la sortie paginée?
J'utilise ZSH avec oh_my_zsh
(rien pour Git), et mon .gitconfig
ressemble à ceci:
[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
Comme mentionné ci-dessus, il s'agissait d'un changement de comportement par défaut introduit dans Git 2.16 .
Vous pouvez désactiver la sortie paginée pour git branch
par défaut avec le paramètre pager.branch
config :
git config --global pager.branch false
Comme d'autres réponses l'ont fait remarquer, git se transfère par défaut dans un pager (less
par défaut) pour la plupart des commandes.
Un point important, cependant, est que lorsque la variable d’environnement LESS est désactivée, Git le définit sur FRX , ce qui a pour conséquence que le comportement visible de l’utilisateur est identique à celui que le pager n’était pas utilisé lorsque la sortie de la commande est court (c'est-à-dire si vous n'avez que quelques branches) Voir homme moins :
-F ou --quit-si-un-écran
Moins permet de quitter automatiquement si tout le fichier peut être affiché sur le premier écran.-R ou --RAW-CONTROL-CHARS
[...] Les séquences d'échappement "couleur" ANSI sont générées sous forme "brute".-X ou --no-init
Désactive l'envoi des chaînes d'initialisation et de désinitialisation de termcap au terminal. Ceci est parfois souhaitable si le La chaîne de désinitialisation fait quelque chose d'inutile, comme effacer le. écran.
Si vous obtenez le comportement que vous décrivez, il est fort probable que $LESS
soit réglé sur autre chose, et le réinitialiser permettrait de résoudre le problème tout en conservant le comportement "pageur" pour une sortie longue. Sinon, vous pouvez activer le comportement tout en conservant $LESS
en l'état en l'ajoutant à votre fichier .gitconfig
:
[core]
pager = less -FRX
Si vous n'aimez vraiment pas le téléavertisseur, vous pouvez le désactiver globalement ou par commande (voir autres réponses).
Ne pas discuter la sémantique, mais le comportement que vous obtenez est le comportement par défaut. C'est pourquoi vous l'obtenez quand vous ne demandez pas quelque chose de différent. Par défaut, branch
(et de nombreuses autres commandes git) utilise un pager lors de l'envoi d'une sortie au terminal.
Vous pouvez remplacer cette valeur par défaut en utilisant l'option --no-pager
git --no-pager branch
Ou bien, si vous redirigez la sortie vers un fichier, git devrait détecter qu’il n’écrit pas sur un terminal et ne devrait donc pas utiliser un pager de toute façon. (D'autre part, cela suggère un cas d'utilisation de script, auquel cas vous devriez envisager d'utiliser une commande de plomberie telle que git for-each-ref
plutôt que git branch
.)
Pour ceux qui veulent mettre à jour leur ~/.gitconfig
pour résoudre ce problème, cela ressemble à ceci:
[pager]
branch = false
ce comportement git était de plus en plus agaçant pour moi aussi . J'ai eu ma liste de balises dans less
quand je voulais juste lister les balises par exemple.
Vous pouvez également contrôler ce comportement en modifiant le paramètre par défautGit PAGERen cat
au lieu de less
. Je préférerais faire défiler dans iTerm que dans l'éditeur. J'aime utiliser l'éditeur quand je veux.
Alors:
git config --global core.pager cat
J'espère que ça aide.
La commande de branche Git se comporte comme "moins"
Parce que git par défaut ouvre la sortie dans pager (au moins dans ubuntu). La réponse acceptée remplacera complètement le pager, ce qui risque de ne pas vous plaire si votre sortie est très longue.
Je recommanderais de remplacer le pageur par less
afin qu'il ne produise pas de "défilement" moins que la hauteur du terminal.
git config --global --replace-all core.pager "less -F -X"
Faites ce qui suit:
[alias]
br = !git --no-pager branch
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
GIT_PAGER contrôle le programme utilisé pour afficher une sortie de plusieurs pages sur la ligne de commande. Si ceci n'est pas défini, PAGER sera utilisé comme solution de secours.
Pour résoudre votre problème, vous pouvez désactiver PAGER et GIT_PAGER dans votre shell.