web-dev-qa-db-pt.com

Como exportar log git apenas com a primeira linha?

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.

275
JJD

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.

454
Gauthier

O git log --oneline faz o que você quer?

131
9000

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/

32
atilkan

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).

23
That Brazilian Guy

Isso imprimirá apenas a mensagem (somente linha de assunto) sem hash:

git log --pretty=format:%s
12
technophyle

Sem commit messages, apenas o hash:

git log --pretty=oneline | awk '{print $1}'
8
otiai10