pretty - git log with description




A saída mais curta possível do log git contendo autor e data (8)

Eu uso essas duas configurações .gitconfig:

[log]
  date = relative
[format]
  pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset

% ad é a data do autor, que pode ser sobrescrita por --date ou a opção especificada na sub-rotina [log] em .gitconfig. Eu gosto da data relativa porque dá uma sensação imediata de quando as coisas foram cometidas. Saída parece com isso:

6c3e1a2 2 hours ago [email protected] lsof is a dependency now.
0754f18 11 hours ago [email protected] Properly unmount, so detaching works.
336a3ac 13 hours ago [email protected] Show ami registration command if auto register fails
be2ad45 17 hours ago [email protected] Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago [email protected] Shorten while loops

Isso tudo é claro em cores, por isso é fácil distinguir as várias partes de uma linha de log. Também é o padrão ao digitar git log por causa da seção [format].

ATUALIZAÇÃO 2014: Como o git agora suporta padding, eu tenho uma boa emenda para a versão acima:

pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s

Esse direito alinha as datas relativas e alinha os nomes dos commiters, o que significa que você tem uma aparência de coluna que é fácil para os olhos.

Screenshot

ATUALIZAÇÃO DE 2016: Como a assinatura do GPG commit está se tornando uma coisa, achei que atualizaria este post com uma versão que inclui verificação de assinatura (na captura de tela é a letra magenta logo após o commit). Uma breve explicação da bandeira:

% G ?: mostre "G" para uma boa assinatura (válida), "B" para uma assinatura ruim, "U" para uma boa assinatura com validade desconhecida e "N" para nenhuma assinatura

Outras mudanças incluem:

  • as cores são removidas agora se a saída for para algo diferente do tty (que é útil para grepping etc.)
  • git log -g agora contém o seletor de reflog.
  • Salve 2 parentes em refnames e coloque-os no final (para preservar o alinhamento da coluna)
  • Trunque as datas relativas se forem muito longas (por exemplo, 3 years, 4.. )
  • Truncar nomes de commiter (pode ser um pouco curto para alguns ppl, apenas mude o %<(7,trunc) ou confira o recurso git .mailmap para encurtar nomes de commiter )

Aqui está a configuração:

pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D

Tudo em todos os alinhamentos de coluna agora é preservado muito melhor à custa de alguns (esperançosamente) caracteres inúteis. Sinta-se à vontade para editar se você tiver alguma melhoria, eu adoraria fazer a cor da mensagem depender de um commit ser assinado, mas não parece que isso é possível em um atm.

Screenshot

Como posso mostrar uma saída de log git com (pelo menos) esta informação:

* author
* commit date
* change

Eu quero compactado em uma linha por entrada de log. Qual é o formato mais curto possível para isso?

(tentou --format=oneline mas isso não mostra a data)


Execute isso na pasta do projeto:

$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all

E se você quiser, adicione esta linha ao seu ~ / .gitconfig:

[alias]
    ...
    list = log --pretty=format:\"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn\" --graph --all

Sinta-se à vontade para usar este:

git log --pretty="%C(Yellow)%h  %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s"

Veja:


Todas as sugestões acima mencionadas usam %s placeholder %s para assunto. Eu recomendarei usar %B porque %s formatação de %s preserva novas linhas e a mensagem de confirmação de várias linhas aparece esmagada.

git log --pretty=format:"%h%x09%an%x09%ai%x09%B"

git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

fez o trabalho. Isso gera:

  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi
  93f1526 jesper  Tue Nov 25 09:45:56 2008 +0000  adding time.ZONE.now as time zone 
  2f0f8c1 tobias  Tue Nov 25 03:07:02 2008 +0000  Timezone configured in environment
  a33c1dc jesper  Tue Nov 25 01:26:18 2008 +0000  updated to most recent will_pagina

Inspirado pela pergunta : "git log output como svn ls -v" , descobri que poderia adicionar os parâmetros exatos que eu precisava.

Para encurtar a data (sem mostrar a hora) use --date=short

Caso você estivesse curioso sobre quais eram as diferentes opções:
%h = hash de confirmação abreviado
%x09 = tab (caractere para o código 9)
%an = nome do autor
%ad = data do autor (format respects --date = option)
%s = assunto
A partir do kernel.org/pub/software/scm/git/docs/git-log.html (seção FORMATOS BONITOS) por meio de um comentário sobre o Vivek.


tig é uma alternativa possível ao uso do comando git log , disponível nas principais distribuições open source * nix.

No debian ou ubuntu, tente instalar e rodar da seguinte maneira:

$ sudo apt-get install tig

(tig é instalado)

$ tig

(log é exibido no pager da seguinte maneira, com o hash do commit atual exibido na parte inferior)

2010-03-17 01:07 ndesigner      changes to sponsors list
2010-03-17 00:19 rcoder         Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder         Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)

Como o markdown não suporta a coloração de texto, imagine: coluna 1: azul; coluna 2: verde; coluna 3: cor de texto padrão. Última linha, destacada. Pressione Q ou q para sair.

tig justifica as colunas sem bordas irregulares , o que uma aba ascii (% x09) não garante.

Para um formato de data curto, clique em D de capital (note: d minúsculo abre uma visualização de diferenças). Configure-o permanentemente adicionando show-date = short a ~ / .tigrc; ou em uma seção [tig] em .git / configure ou ~ / .gitconfig.

Para ver uma alteração completa :

  • aperte Enter . Um painel secundário será aberto na metade inferior da janela.
  • use as teclas k , j para rolar a mudança no sub painel.
  • ao mesmo tempo, use as teclas para cima e para baixo para passar de commit para commit.

Como tig é separado do git e aparentemente * nix específico, provavelmente requer que o cygwin seja instalado no windows. Mas para o fedora eu acredito que os comandos de instalação são $ su , (enter root password) , # yum install tig . Para freebsd, tente % su , (enter root password) , # pkg_add -r tig .

By the way, tig é bom para muito mais do que uma visão rápida do log: Screenshots & Manual


git log --pretty=format:'%h %ad  %s%x09%ae' --date=short

Resultado:

e17bae5 2011-09-30  Integrate from development -> main      [email protected]
eaead2c 2011-09-30  More stuff that is not worth mentioning [email protected]
eb6a336 2011-09-22  Merge branch 'freebase' into development        [email protected]

Material de largura constante é o primeiro. A parte menos importante - o domínio de email - é a última e fácil de filtrar.


git log --pretty=format:'%h %ad %s (%an)' --date=short  

ou

git log --pretty=format:'%h %ad %s | %an' --date=short  

... respondendo sobre a resposta do cdunn2001 acima: Eu perderia o e = mail do autor e incluiria apenas o nome do autor, como Jesper e knittl, mas mantendo a idéia de cdunn2001 de manter a saída em colunas de largura constante para facilitar a leitura ( boa ideia!). No lugar de uma coluna justificada à esquerda separada para o nome do autor, no entanto, eu envolvo essa bandeira no final do comando com parênteses ou desloco-a com um pipe. (Pode ser qualquer caractere que sirva como auxílio visual na leitura da saída ... embora possa fazer sentido evitar barras invertidas ou posteriores para reduzir a confusão na saída com um diretório ou algo do tipo.)

Amostra de saída:

6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac




logging