Estou tentando exibir o último commit no Git, mas preciso da data em um formato especial.
Eu sei que o formato bonito do log %ad
respeita o --date
formato, mas o único --date
formato que posso encontrar é "curto". Quero conhecer os outros e se posso criar um personalizado, como:
git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"
git
command-line
ar3
fonte
fonte
--date=iso-strict
: veja minha resposta abaixo--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, você também terá:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Respostas:
Os outros são (de
git help log
):Não há nenhuma maneira interna que eu conheça para criar um formato personalizado, mas você pode fazer alguma mágica de shell.
O primeiro passo aqui fornece um timestamp de milissegundos. Você pode alterar a segunda linha para formatar esse carimbo de data e hora como desejar. Este exemplo fornece algo semelhante a
--date=local
, com um dia preenchido.E se você quiser efeito permanente sem digitar isso sempre, tente
Ou, para ter efeito em todo o seu uso de git com esta conta
fonte
git config log.date iso
ou, para efeito sobre todo o uso seu git com essa contagit config --global log.date iso
--format:<args>
passará<args>
para strftime.Além disso
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, como já mencionado, você também pode usar um formato de data de log personalizado comIsso gera algo como
2016-01-13 11:32:13
.NOTA: Se você der uma olhada no commit vinculado abaixo, acredito que precisará pelo menos Git v2.6.0-rc0para que isso funcione.
Em um comando completo, seria algo como:
Não consegui encontrar isso na documentação em nenhum lugar (se alguém souber onde encontrá-lo, comente), então encontrei os marcadores por tentativa e erro.
Na minha pesquisa por documentação, encontrei um commit no Git que indica que o formato é alimentado diretamente
strftime
. Olhando para cimastrftime
( aqui ou aqui ), os marcadores que encontrei correspondem aos marcadores listados.Os espaços reservados incluem:
Em um comando completo, seria algo como
fonte
git config --global alias.lg "log --graph --decorate -30 --all --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset %C(black bold)%ad%Creset%C(auto)%d %s'"
git lg
e ainda recebo o seguinte erro.fatal: unknown date format format:%Y-%m-%d %H:%M:%S
. Estou executando o git no Windows. Aqui está a minha versão do git.git version 1.9.5.msysgit.1
. Então, eu tenho que atualizar para a versão mais recente?%X
, ~~ eu apenas tentei na minha máquina e definitivamente obtendo horários no meu fuso horário. ~~ Hmm, agora não tenho certeza. Clonei um repositório de alguém que não estava no meu fuso horário e tentei novamente. Acho que estou apenas começando a hora formatada usando as configurações atuais de localidade, mas com o fuso horário cortado.Depois de muito tempo procurando uma maneira de obter
git log
a data no formatoYYYY-MM-DD
de uma maneira que funcionasseless
, criei o seguinte formato:junto com o interruptor
--date=iso
.Isso imprimirá a data no formato ISO (longo) e, em seguida, imprimirá 14 vezes o caractere de backspace (0x08), que, no meu terminal, remove efetivamente tudo após a parte AAAA-MM-DD. Por exemplo:
Isso dá algo como:
O que fiz foi criar um alias nomeado
l
com alguns ajustes no formato acima. Ele mostra o gráfico de confirmação à esquerda e, em seguida, o hash da confirmação, seguido da data, dos nomes abreviados, dos refnames e do assunto. O alias é o seguinte (em ~ / .gitconfig):fonte
--date=short shows only date but not time, in YYYY-MM-DD format.
| sort | uniq
não funcionam.%C(bold cyan)%ai%x08%x08%x08%x08%x08%x08%x08%x08%x08%C(reset) %C(bold green)(%ar%x08%x08%x08%x08)%C(reset)
para obter o formato2015-01-19 11:27 (11 days)
. +1Você pode usar a opção de truncamento de campo para evitar muitos
%x08
caracteres. Por exemplo:é equivalente a:
E um pouco mais fácil para os olhos.
Melhor ainda, para este exemplo particular, usando
%cd
honrará o--date=<format>
, então se você quiserYYYY-MM-DD
, você pode fazer isso e evitar%<
e%x08
inteiramente:Acabei de perceber que isso era um pouco circular em relação ao post original, mas deixarei no caso de outros chegarem aqui com os mesmos parâmetros de pesquisa que eu.
fonte
Eu precisava da mesma coisa e achei o seguinte funcionando para mim:
O
--date=format
formata a saída de data onde o--pretty
diz o que imprimir.fonte
git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
Esteja ciente do
date=iso
formato " ": não é exatamente o ISO 8601 .Consulte commit " 466fb67 " de Beat Bolli (
bbolli
) , para Git 2.2.0 (novembro de 2014)pretty: forneça um formato estrito de data ISO 8601
Veja este tópico para discussão.
fonte
Observe que isso será convertido para o fuso horário local, caso isso seja importante para o seu caso de uso.
fonte
O Git 2.7 (quarto trimestre de 2015) será apresentado
-local
como uma instrução.Isso significa que, além de:
você também terá:
O
-local
sufixo não pode ser usado comraw
ourelative
. Referência .Agora você pode solicitar qualquer formato de data usando o fuso horário local . Vejo
johnkeeping
) .Consulte commit add00ba , commit 547ed71 (03 de setembro de 2015) por Jeff King (
peff
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 7b09c45 , 05 de outubro de 2015)Em particular, o último acima (commit add00ba) menciona:
fonte
format-local
trabalhos também! Portanto, é muito perfeito mesclar a potência entre o formato favorito e o local.A opção de formato
%ai
era o que eu queria:fonte
Com o Git 2.21 (primeiro trimestre de 2019), foi introduzido um novo formato de data "
--date=human
" que transforma sua saída dependendo da distância da hora atual ."
--date=auto
" pode ser usado para usar este novo formato quando a saída estiver indo para o pager ou para o terminal e, caso contrário, o formato padrão.Consulte commit 110a6a1 , commit b841d4f (29 Jan 2019) e commit 038a878 , commit 2fd7c22 (21 Jan 2019) por Stephen P. Smith (``) .
Veja commit acdd377 (18 Jan 2019) por Linus Torvalds (
torvalds
) .(Mesclado por Junio C Hamano -
gitster
- in commit ecbe1be , 07 de fevereiro de 2019)O Git 2.24 (quarto trimestre de 2019) simplificou o código.
Consulte commit 47b27c9 , commit 29f4332 (12 set 2019) por Stephen P. Smith (``) .
(Mesclado por Junio C Hamano -
gitster
- in commit 36d2fca , 07 out 2019)fonte
fonte
Use o Bash e o comando date para converter de um formato semelhante ao ISO para o desejado. Eu queria um formato de data no modo organizacional (e item de lista), então fiz isso:
E o resultado é, por exemplo:
fonte