Lorsque j'utilise la git branch
commande pour répertorier toutes les branches, je vois la sortie de git branch | less
.
La commande git branch
est censée afficher une liste de branches, comme ls
pour les fichiers.
Voici la sortie que j'obtiens:
Comment 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 là-dedans), et mon .gitconfig
apparence 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
git branch
avec autre chose. En utilisant la détection des tuyaux , Git affichera la liste des branches sur stdout dans les commandesgit branch > branches.txt
ougit branch | wc -l
.ESC/q
après une simplegit branch
vérification.less
, vous pouvez l'ajouter--no-init --quit-if-one-screen
à votreLESS
variable d'environnement, ce qui entraîneraless
simplement l'écriture sur stdout si le texte peut être affiché sans défilement. Voirman less
pour plus de détails.[pager] branch = false
(sur deux lignes).Comme d'autres réponses l'ont souligné, Git utilise par défaut la tuyauterie dans un pager (
less
par défaut) pour la plupart des commandes.Un point important, cependant, est que lorsque la variable d'environnement LESS n'est pas définie, 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 pager n'était pas utilisé lorsque la sortie de la commande est courte (c'est-à-dire si vous n'avez que peu de succursales). Voir l' homme moins :
Si vous obtenez le comportement que vous décrivez, il est fort probable que vous ayez
$LESS
défini autre chose, et le désactiver (unset LESS
) éliminerait le problème tout en conservant le comportement de «pageur» pour une sortie longue. Alternativement, vous pouvez activer le comportement pour tout en le conservant$LESS
tel quel en l'ajoutant à votre.gitconfig
fichier:Si vous n'aimez pas vraiment la fonction de pager, vous pouvez la désactiver globalement ou par commande (voir les autres réponses).
la source
Ne pas contester la sémantique, mais le comportement que vous obtenez est celui par défaut. C'est pourquoi vous l'obtenez lorsque vous ne demandez pas quelque chose de différent. Par défaut,
branch
(et de nombreuses autres commandes Git) utilisent un pager lors de l'envoi de la sortie au terminal.Vous pouvez remplacer cette valeur par défaut en utilisant l'
--no-pager
option: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
.)la source
git --no-pager branch
travaux. Mais comment est-ce réglé? Seule laPAGER
variable d'environnement est définie surless
. Ce n'est pas le comportement par défaut. Tous mes collèges ont une sortie sous forme de liste imprimée sur le terminal.Ce comportement Git était de plus en plus ennuyeux pour moi aussi. J'ai obtenu ma liste de balises
less
lorsque je voulais simplement lister des balises par exemple.On peut contrôler ce comportement également en changeant le Git PAGER par défaut à la
cat
place deless
. Je préfère faire défiler dans iTerm que dans un éditeur. J'aime utiliser l'éditeur quand je veux.Donc:
la source
git log
je le fais c'est ennuyeux. Je manque juste le comportement d'origine, mais je n'ai pas eu le temps d'améliorer mon flux de travail quotidien dans cette perspective.git log
...Pour ceux qui veulent mettre à jour leur
~/.gitconfig
pour résoudre ce problème, cela ressemblerait à ceci:la source
git config --list --show-origin
de déboguer quels paramètres sont / ne sont pas définis pour vous / votre système et d'où ( stackoverflow.com/q/12254076/1590950 ).Parce que Git ouvre par défaut la sortie dans le pager (au moins dans Ubuntu). La réponse acceptée remplacera complètement le téléavertisseur, ce qui pourrait ne pas vous plaire si votre sortie est très longue.
Je recommanderais de remplacer le téléavertisseur
less
pour qu'il ne "défile" pas moins que la hauteur du terminal.la source
Procédez comme suit:
la source
La réponse acceptée semble fausse. Il y a deux problèmes:
git branch
ne pas toujours utiliser un téléavertisseur, ce qui ne sera pas souhaité lorsqu'il y a beaucoup de sortie.La vraie raison est que bash et zsh ont des définitions par défaut différentes de LESS: bash ne définit rien, tandis que zsh le définit pour
-R
. Quand je faisunset LESS
en zsh, tout revient à la normale ....Le
-R
comportement peut toujours être souhaité. Dans ce cas, vous pouvez ajouter les instructions suivantes à votre .zshrc pour que tout fonctionne:-F
«provoque la fermeture automatique de moins si le fichier entier peut être affiché sur le premier écran». Cependant,-X
doit être spécifié simultanément, sinon aucune sortie ne sera affichée lorsqu'il y aura moins d'un écran de sortie.la source
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
Pour résoudre votre problème, vous pouvez désactiver PAGER et GIT_PAGER dans votre shell.
la source
PAGER
(GIT_PAGER
n'a pas été réglé) est toujours là. Y a-t-il un endroit où je dois vérifier cet envars?PAGER= git branch
(avec un espace après et aucun avant le signe égal exactement comme écrit). Aucune idée, que ce soit mieux que par exemplegit branch | cat
.J'ai eu le même problème avec
git status
etgit config --global pager.status false
résout cela aussi.la source