La commande de twig Git se comporte comme «moins»

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:

Entrez la description de l'image ici

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.