git log se comporta como menos

3

git log -{n} , quando -n é suficientemente pequeno, não abre em less simplesmente imprime na tela. Isso é desejável. git log -1 não deve ocupar toda a tela.

Infelizmente, no shell bash do MINGW, depois de executar um comando não-git, git log se comporta como se eu tivesse executado em less e enviado q . (em outras palavras, os dados são impressos na parte inferior da tela e acabo com uma pilha de espaço em branco no topo).

Demonstração imaginária (perdoe sua duração):

>> clear









>> git log -1




commit 123123...
Author: CPfohl
Date: {today}
    {Message}

>> git log -1
commit 123123...
Author: CPfohl
Date: {today}
    {Message}

Isso funciona, não importa o comando git que eu execute antes de git log , contanto que git log -{n} seja após um comando git.

Isso é um bug, ou há uma maneira de fazer com que isso se comporte normalmente?

    
por Crisfole 18.11.2011 / 22:01

2 respostas

3

Se você quiser desativar a paginação para alguns / todos os comandos do git, você pode:

  • definir valor de configuração ( pager.<cmd> ou core.pager para todos os comandos) para cat
  • use --no-pager option

Mas talvez eu não tenha entendido sua pergunta. O comportamento descrito deve ser possivelmente alterado definindo o comando de paginação apropriado ( less com algumas opções) nas opções de configuração mencionadas anteriormente.

    
por 18.11.2011 / 22:19
0

Ou você também pode definir um alias no seu arquivo de configuração do git que permite mostrar o log de uma maneira especial, se você digitar os seguintes comandos, por exemplo, configurar .gitconfig para ser editado com o Sublime Text 3:

git config --global core.editor "'c:/Program Files/Sublime Text 3/sublime_text.exe'" -w

git config --global alias.showconfig "config --global -e"

Além disso, você pode adicionar um alias no git para mostrar os commits mais recentes em todas as filiais de um repositório:

Adicione [alias] se estiver faltando no .gitconfig, então:

latest = "!f() { echo "Latest \"${1:-11}\" commits accross all branches:"; git log  --abbrev-commit --date=relative --branches --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' -n ${1:-11};  } ; f"

O alias aqui usa uma função shell com um parâmetro definido para uma variável shell. Se você não especificar um valor de parâmetro, o alias usará 11 como o valor padrão (a sintaxe poderia ser facilmente interpretada com -11, mas a sintaxe $ {1: -11} significa o primeiro parâmetro no shell e definir um padrão valor para o parâmetro, se ele estiver ausente. Um pouco como valores padrão em C # ou parâmetros padrão no Powershell.

Como você pode ver, o alias que damos ao git pode conter vários comandos, separados por um ponto e vírgula.

Eu testei isso executando git latest e git latest 3 na captura da tela de saída de amostra abaixo. Você vê minha edição da minha configuração do git para a esquerda.

Com as funções e aliases do shell, podemos fazer muito mais com o Git sem ter que digitar muito. A sintaxe das funções shell segue as regras BASH e pode ser usada também em um ambiente Windows com CMD.

    
por 29.08.2018 / 18:32