Estou tentando personalizar o formato para git log
. Quero que todos os commits sejam mostrados em uma linha. Cada linha deve mostrar apenas a primeira linha da mensagem de confirmação.
Eu descobri que isso git log --pretty=short
deveria funcionar, mas no meu computador ele mostra o log completo como git log
faz (além do registro de data e hora).
Além disso, tentei usar os espaços reservados, conforme definido na página do manual . No entanto, não foi possível encontrar um comando para reduzir 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 confirmação. Aqui está um exemplo:
Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.
Portanto, com o exemplo dado, eu só quero que a saída seja Added some functionality.
anexada pelo hash de shortend.
%s
é o assunto, não a mensagem completa.short
formato não está todo em uma linha, no entanto (surpresa!)oneline
. Seoneline
e%h : %s
não é o que você quer, o que há de errado com eles? Em particular,%s
é o assunto, a primeira linha da mensagem de confirmação. Essa deve realmente ser uma versão abreviada. É possível que você esteja fazendo confirmações com uma única linha longa para a mensagem e visualizando-as de alguma forma com quebra de linha?oneline
e%s
não gera o que esperamos, pelo menos no meu computador. Atualizei minha postagem com um exemplo da minha mensagem de confirmação. Talvez ajude.Respostas:
Você já tentou isso?
O problema é provavelmente que está faltando uma linha vazia após a primeira linha. O comando acima geralmente funciona para mim, mas eu apenas testei em um commit sem a segunda linha vazia. Obtive o mesmo resultado que você: a mensagem inteira em uma linha.
A segunda linha vazia é um padrão nas mensagens de confirmação do git. O comportamento que você vê provavelmente foi implementado de propósito.
A primeira linha de uma mensagem de confirmação deve ser uma descrição curta. Se você não pode fazer isso em uma única linha, pode usar várias, mas o git considera tudo antes da primeira linha vazia como a "descrição resumida".
oneline
imprime toda a descrição curta, para todas as suas 3 linhas.fonte
git log
para um script de filtragem, mas eu realmente recomendaria escrever uma descrição curta com linha vazia.git log --oneline
--oneline é uma abreviação incorporada para "--pretty = oneline --abbrev-commit" usado juntos.cut
. Isso seria um problemaawk
... (BTW math P: quais são as chances de o próximo bit em uma sequência de huffman adequadamente codificada, no nível de armazenamento, estar%
para'%s'
. C-;Faz o
git log --oneline
que você quer?fonte
Melhor e mais fácil log git, criando um alias . Cole o código abaixo no terminal apenas uma vez para uma sessão. Cole o código no perfil zshrc ou bash para torná-lo persistente.
Resultado
Linhas alteradas de saída
Como alternativa (recomendado)
cole esse código no arquivo .gitconfig global
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/
fonte
git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1
. Você pode passar -p para esse arquivo bat para obter as linhas alteradas tambémIsso imprimirá apenas a mensagem (somente linha de assunto) sem hash :
fonte
%s
para o assunto;%b
para o corpo;%B
para ambos ("corpo bruto" em git-scm.com/docs/pretty-formats ))Você pode definir um alias global para chamar um log curto de uma maneira mais confortável:
git config --global alias.slog "log --pretty=oneline --abbrev-commit"
Em seguida, você pode chamá-lo usando
git slog
(ele até funciona com preenchimento automático, se você o tiver ativado).fonte
Sem mensagens de confirmação, apenas o hash:
fonte
git log --pretty=format:"%H"
git rev-list HEAD
.Se você quiser sempre usar
git log
dessa maneira, poderá adicionar o alias do gitgit config --global alias.log log --oneline
depois disso
git log
, imprimirá o que normalmente seria impresso porgit log --oneline
fonte
"log --oneline"
).