Eu estou tentando personalizar o formato para git log
. Eu quero que todos os commits sejam mostrados em uma linha. Cada linha deve mostrar apenas a primeira linha da mensagem de commit.
Eu descobri que git log --pretty=short
deveria fazer o truque, mas no meu computador mostra o registro completo como git log
(além do registro de data e hora).
Além disso, tentei usar o marcadores de posição, conforme definido na página man . No entanto, não consegui encontrar um comando para encurtar a mensagem de log. Eu tentei esta linha git log --pretty=format:'%h : %s'
que mostra o hash em curto %h
e a mensagem completa %s
em uma linha.
Eu estou usando git version 1.7.3.1.msysgit.0
no Vista.
Talvez tenha algo a ver com a maneira como escrevo minhas mensagens de commit. Aqui está um exemplo:
Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.
Então, com o exemplo dado, eu só quero dar saída Added some functionality.
prefixada pelo hash de shortend.
Você já tentou isso?
git log --pretty=oneline --abbrev-commit
O problema é provavelmente que você está perdendo uma linha vazia após a primeira linha. O comando acima geralmente funciona para mim, mas eu apenas testei em um commit sem segunda linha vazia. Eu tenho o mesmo resultado que você: toda a mensagem em uma linha.
A segunda linha vazia é um padrão nas mensagens de confirmação do git. O comportamento que você vê foi provavelmente implementado de propósito.
A primeira linha de uma mensagem de commit deve ser uma breve descrição. Se você não pode fazer isso em uma única linha, você pode usar vários, mas o git considera tudo antes da primeira linha vazia ser a "descrição curta". oneline
imprime toda a descrição curta, então todas as suas 3 linhas.
O git log --oneline
faz o que você quer?
Melhor e mais fácil git log fazendo um alias . Cole o código abaixo para terminal apenas uma vez por uma sessão. Cole o código em zshrc ou bash profile para torná-lo persistente.
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Saída
git lg
Saída linhas alteradas
git lg -p
Leitura Adicional.
https://coderwall.com/p/euwpig/a-better-git-log
Leitura Avançada
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
Você pode definir um alias global para invocar um log curto de uma maneira mais confortável:
git config --global alias.slog "log --pretty=oneline --abbrev-commit"
Então você pode chamá-lo usando git slog
(ele ainda funciona com autocompletar se você tiver ativado).
Isso imprimirá apenas a mensagem (somente linha de assunto) sem hash:
git log --pretty=format:%s
Sem commit messages, apenas o hash:
git log --pretty=oneline | awk '{print $1}'