Lorsque j’utilise la commande git branch
pour répertorier toutes les twigs, je vois la sortie de la git branch | less
git branch | less
La commande git branch
est censée afficher une liste de twigs, comme ls
fait pour les fichiers.
C’est le résultat que j’obtiens:
Comment j’obtiens le comportement par défaut de la git branch
? Quelle est la cause de 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 la git branch
par défaut avec le pager.branch
configuration pager.branch
:
git config --global pager.branch false
Comme d’autres réponses l’ont souligné, git se définit par défaut comme un paginateur ( 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 la définit sur FRX et la conséquence est que le comportement visible par l’utilisateur est le même que si le pagineur n’était pas utilisé lorsque la sortie de la commande était courte ( si vous avez seulement quelques twigs). Voir l’ homme moins :
-F ou –quit-si-un-écran
Entraîne moins de sortie automatique si tout le fichier peut être affiché sur le premier écran.-R ou –RAW-CONTROL-CHARS
[…] Les séquences d’échappement ANSI “color” sont affichées sous forme “brute”.-X ou –no-init
Désactive l’envoi des chaînes d’initialisation terminap et de désinitialisation au terminal. Ceci est parfois souhaitable si la chaîne de désinitialisation ne fait rien, comme effacer l’écran.
Si vous obtenez le comportement que vous décrivez, il est fort probable que $LESS
défini sur autre chose et que vous ne le supprimiez pas tout en conservant le comportement de “pageur” pour une sortie longue. Vous pouvez également activer le comportement en conservant $LESS
en l’ajoutant à votre fichier .gitconfig
:
[core] pager = less -FRX
Si vous n’aimez pas vraiment le téléavertisseur, vous pouvez le désactiver globalement ou par commande (voir les autres réponses).
Ne pas argumenter la sémantique, mais le comportement que vous obtenez est celui 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 de la sortie vers le terminal.
Vous pouvez remplacer cette valeur par défaut en utilisant l’option --no-pager
git --no-pager branch
Ou 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’un autre côté, cela suggère un cas d’utilisation de script, auquel cas vous devriez envisager d’utiliser une commande de plomberie comme git for-each-ref
de préférence à git branch
.)
https://git-scm.com/book/gr/v2/Git-Internals-Environment-Variables
GIT_PAGER contrôle le programme utilisé pour afficher la sortie de plusieurs pages sur la ligne de commande. Si ce n’est pas défini, PAGER sera utilisé comme solution de secours.
Pour résoudre votre problème, vous pouvez supprimer PAGER et GIT_PAGER dans votre shell.