Quando uso o git branch
comando para listar todas as ramificações, vejo a saída de git branch | less
.
O comando git branch
deve mostrar uma lista de ramificações, como ls
faz para arquivos.
Esta é a saída que recebo:
Como obtenho o comportamento padrão de git branch
? O que causa a saída paginada?
Estou usando o ZSH com oh_my_zsh
(nada para o Git lá), e minha .gitconfig
aparência é a seguinte:
[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
com outra coisa. Usando a detecção de pipe , o Git exibirá a lista de ramificações para stdout dentro dos comandosgit branch > branches.txt
ougit branch | wc -l
.ESC/q
depois de umagit branch
verificação simples .less
, você poderá adicionar--no-init --quit-if-one-screen
à suaLESS
variável de ambiente, o que fará comless
que apenas escreva no stdout se o texto puder ser exibido sem rolagem. Vejaman less
para mais detalhes.[pager] branch = false
(em duas linhas).Como outras respostas apontaram, o Git assume como padrão o piper em um pager (
less
por padrão) para a maioria dos comandos.Um ponto importante, porém, é que, quando a variável de ambiente LESS está desabilitada, o Git a define como FRX , e a conseqüência é que o comportamento visível do usuário é o mesmo que se o pager não fosse usado quando a saída do comando fosse curta (por exemplo, se você tiver apenas alguns ramos). Veja menos homem :
Se você obtiver o comportamento que você descreve, provavelmente
$LESS
configurou outra coisa e, se desmarcá-lo (unset LESS
), se livraria do problema, mantendo o comportamento do "pager" para uma saída longa. Como alternativa, você pode ativar o comportamento mantendo$LESS
-o como está adicionando isso ao seu.gitconfig
arquivo:Se você realmente não gosta do pager, pode desativá-lo globalmente ou por comando (consulte outras respostas).
fonte
Para não discutir semântica, mas o comportamento que você está recebendo é o padrão. É por isso que você o obtém quando não pede algo diferente. Por padrão,
branch
(e vários outros comandos Git) usam um pager ao enviar a saída para o terminal.Você pode substituir esse padrão usando a
--no-pager
opção:Ou, se você redirecionar a saída para um arquivo, o Git deve detectar que não está gravando em um terminal e, portanto, não deve usar um pager. (Por outro lado, isso sugere um caso de uso de script, nesse caso, você deve considerar o uso de um comando de encanamento, como
git for-each-ref
preferencialmentegit branch
.)fonte
git --no-pager branch
trabalho. Mas como é esse cenário? Somente aPAGER
variável de ambiente está definida comoless
. Este não é o comportamento padrão. Todas as minhas faculdades têm uma saída como uma lista impressa no terminal.Esse comportamento do Git também era cada vez mais irritante para mim. Eu recebi minha lista de tags
less
quando apenas queria listar tags, por exemplo.Pode-se controlar esse comportamento também alterando o Git PAGER padrão para em
cat
vez deless
. Prefiro rolar no iTerm do que em um editor. Eu gosto de usar o editor quando quiser.Assim:
fonte
git log
lo é irritante. Só sinto falta do comportamento original, mas não tive tempo para melhorar meu fluxo de trabalho diário nesta perspectiva.git log
...Para aqueles que desejam atualizar seus
~/.gitconfig
para corrigir isso, seria assim:fonte
Como o Git, por padrão, abre a saída no pager (pelo menos no Ubuntu). A resposta aceita substituirá completamente o pager, o que você pode não gostar se sua saída for muito longa.
Eu recomendaria substituir o pager por
less
, para que ele não "role" as saídas menos que a altura do terminal.fonte
Faça o seguinte:
fonte
A resposta aceita parece errada. Existem dois problemas:
git branch
não utilizará sempre um pager, o que não será desejado quando houver muita saída.A verdadeira razão é que o bash e o zsh têm definições padrão diferentes sobre o LESS: o bash não define nada, enquanto o zsh o define
-R
. Quando eu façounset LESS
no zsh, tudo volta ao normal ....O
-R
comportamento ainda pode ser desejado. Nesse caso, você pode adicionar as seguintes instruções ao seu .zshrc para manter tudo funcionando:-F
'faz com que menos saia automaticamente se o arquivo inteiro puder ser exibido na primeira tela'. No entanto,-X
precisa ser especificado simultaneamente, caso contrário, nenhuma saída será mostrada quando houver menos de uma tela de saída.fonte
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
Para resolver seu problema, você pode desabilitar PAGER e GIT_PAGER no seu shell.
fonte
PAGER
(GIT_PAGER
não foi definido) ainda está lá. Existe algum local para verificar esses envários?PAGER= git branch
(com um espaço depois e nenhum antes dos sinais de igual exatamente como escritos). Não faço ideia, se é melhor do que, por exemplogit branch | cat
,.Eu tive o mesmo problema
git status
egit config --global pager.status false
resolve isso também.fonte