Como configurar o 'git log' para mostrar a 'data de confirmação'

127

Como posso configurar git logpara mostrar em commit datevez de author date?

Michael
fonte
25
@Colleen Cada commit possui duas datas associadas - AuthorDate e CommitDate ( git show --pretty=fuller HEADpara ver um exemplo). Para o desenvolvimento local, eles geralmente são os mesmos, mas para os patches adicionados por email ou outros mecanismos, eles podem diferir, onde o AuthorDate é a data em que o patch foi gerado e o CommitDate quando foi realmente aplicado ao repositório.
twalberg

Respostas:

145

Existem várias opções para imprimir bastante a data. Provavelmente, o mais fácil é usar apenas um dos --prettyformatos pré-cozidos , como git log --pretty=fuller- isso mostrará as duas datas. Se você deseja ver apenas uma data, mas torná-la a data de confirmação, pode usar git log --format=<some stuff>. Todos os códigos permitidos para definir o formato estão documentados git help log. O comprometer data é um dos %cd, %cD, %cr, %ctou %ci, dependendo do que formato que preferir-lo.

Se é algo que você deseja fazer com frequência, coloque-o em um alias ou escreva um script auxiliar para economizar na digitação.

Twalberg
fonte
53

Você pode usar --pretty=formate usar %cra data de confirmação relativa.

Por exemplo:

$ git log --graph --pretty=format:'%C(auto)%h%d (%cr) %cn <%ce> %s'

Você pode definir um alias no git para facilitar o uso. Eu tenho o seguinte no meu .gitconfig:

[alias]
# see `git help log` for detailed help.
#   %h: abbreviated commit hash
#   %d: ref names, like the --decorate option of git-log(1)
#   %cn: commiter name
#   %ce: committer email
#   %cr: committer date, relative
#   %ci: committer date, ISO 8601-like format
#   %an: author name
#   %ae: author email
#   %ar: author date, relative
#   %ai: author date, ISO 8601-like format
#   %s: subject
# my awesome git log replacement
lol  = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s\"
# same as above, but ISO date
lold = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s\"
# using build-in standards
lol2 = log --oneline --graph --decorate
# shows branches and their last commits
lol3 = log --all --graph --decorate --oneline --simplify-by-decoration

No Linux ou em sistemas similares, você pode usar aspas simples em 'vez de aspas duplas ":

[alias]
lol = log --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s'

Com isso, basta executar git lol, ou as outras variantes, para ver a saída bonita.

Aqui está a saída de git lol --simplify-by-decoration:

saída lol git

  • Isso parece bom. :)
  • lolé mais fácil digitar loge soa melhor também.
    • Também lhe dá acesso ao regular, git logse você precisar.
  • Seus olhos podem digitalizar o conteúdo rapidamente pelas diferentes cores.
  • Nomes e e-mails são muito úteis para grandes projetos / organizações com muitos colaboradores.
  • Usar a coloração padrão para hash / ref, pois já é muito bom.

Aqui está a saída de git loldcom datas no formato ISO. Útil para ver a data / hora exata em que uma confirmação é feita, com o bônus de poder ver facilmente o fuso horário do colaborador.

insira a descrição da imagem aqui

Editar 2020-06 : Adicionadas capturas de tela. Atualizado para usar %C(auto)(coloração automática / padrão) para %h(confirmar hash) e %d(nomes de referência). Adicionado %cn(nome do colaborador) além do email.

raychi
fonte
1
Eu recebo um erro de análise: git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\" bash: erro de sintaxe próximo ao símbolo inesperado `('
frakman1 31/03
2
@ frakman1 - você precisa remover os "s" da linha acima para rodar no terminal
stites
2
Linha corrigida: git log --graph --pretty = formato: "% C (amarelo)% h% Creset% C (ciano)% C (negrito)% d% Creset% C (ciano) (% cr)% Creset% C (verde)% ce% Creset% s "
RedSands 07/11/16
1

Prefiro esse formato, não inclui o nome do autor e inclui a data real para confirmação.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
Patrick Steil
fonte