Eu tenho alguns repositórios git que pertencem um ao outro e um arquivo batch / bash simples para fazer um loop sobre eles. Costumo fazer um loop sobre eles com um comando de log para ver rapidamente em que estado eles estão. Isso funciona bem, exceto por uma coisa: se a mensagem de confirmação for maior do que o número de caracteres que meu console é largo (ou tem várias linhas), git mostra a linha, em seguida, uma nova linha com (END) e eu tenho que pressionar q para continuar (acho que canaliza a saída por meio de mais ou algo parecido). Exemplo:
> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log
625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log
dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)
Isso é um tanto inconveniente, pois preciso pressionar q algumas vezes, mas gostaria apenas de ver todos os oneliners de uma vez.
Como posso desativar esse comportamento (de preferência, mantendo este formato de registro)?
Respostas:
Git tem uma opção para desativar o pager:
Se o seu pager corta linhas e você deseja manter esse comportamento, canalize para
cut
...... ou defina a variável de ambiente
GIT_PAGER
antes da invocação:fonte
--no-pager
o padrão ou ainda melhor em um atalho para essa opção quando necessário? Pensei em aliasinggitnp
paragit --no-pager
, mas acho que existe uma solução melhor.git
para/usr/bin/git --no-pager
que desabilitaria o pager para todas as chamadas git.git
não tem pager embutido. Em vez disso, segue a filosofia Unix e usa tudo o que você tem$PAGER
.git
simplesmente sempre usa em$PAGER
vez de fazer isso apenas aleatoriamente, ao contrário de muitas outras ferramentas mal escritas. A única mágica quegit
possui é que se não$LESS
for definido , definirá o$LESS
valorFRX
. Consulte github.com/git/git/blob/master/Documentation/config.txt#L766 para obter mais detalhes.git
simplesmente fornece uma substituiçãoGIT_PAGER
que permitirá que você defina um valor personalizado a ser usado em vez dePAGER
sempre que o git precisar de paginação.Outra solução para o problema de desativar permanentemente o pager, especificamente ao usar o
log
subcomando:apenas para o repo atual:
git config pager.log false
para a instalação do git (ou seja, todos os repositórios em sua máquina):
git config --global pager.log false
Como você pode imaginar, o mesmo funciona se o pager precisar ser ativado ou desativado para alguns outros subcomandos seletivamente.
Por exemplo. para o
branch
subcomando (que imprime ramos) serágit config pager.branch false
A solução proposta é indiscutivelmente mais elegante em comparação com
usando
git --no-pager
cada vez que você executa determinado comando.Porque, bem possível, você não quer digitar todas as vezes.
especificando
git --no-pager
como um alias paragit
Porque, bem possível, você deseja evitar a configuração global implícita OU deseja que o pager seja habilitado em alguns casos.
dependem de algumas variáveis de ambiente como
PAGER
ouGIT_PAGER
.Para fazer isso, você precisa garantir que eles estejam definidos em sua sessão de terminal atual. E, se você quiser que eles sejam configurados com algum valor personalizado automaticamente cada vez que seu novo terminal for criado, você precisa alterar um dos arquivos bootstrapped como, por exemplo
~/.bashrc
. Não é um grande problema. Mas esses arquivos bootstrapped freqüentemente são alterados por outros aplicativos também e contêm um monte de outras coisas, não apenas as usadas pelo Git. Portanto, em teoria, é melhor especificar as configurações relacionadas ao git usando, emgit config
vez de colocá-las, por exemplo~/.bashrc
.A solução alternativa para desactivar
pager
para todos os subcomando é especificarcat
como o git utilidade vai utilizar para paginação:git config core.pager cat
OUgit config --global core.pager cat
Minha resposta é uma espécie de reformulação da seguinte:
"impedir o git diff de usar um pager?"
https://stackoverflow.com/a/6986231/6103242
É referenciado para apontar outra discussão relevante.
fonte
Desative o pager para todos os comandos:
fonte
Você canaliza para menos -F no caso de --no-pager não funcionar para você.
fonte