Come configurare "git log" per mostrare la "data di commit"


127

Come posso configurare git logper mostrare commit dateinvece di author date?


25
@Colleen Ciascun commit ha due date associate: AuthorDate e CommitDate ( git show --pretty=fuller HEADper vedere un esempio). Per lo sviluppo locale, di solito sono gli stessi, ma per le patch aggiunte tramite e-mail o altri meccanismi, possono differire, dove AuthorDate è la data in cui è stata generata la patch e CommitDate è quando è stata effettivamente applicata al repository.
twalberg

Risposte:


145

Ci sono diverse opzioni per stampare abbastanza la data. Probabilmente il più semplice è usare solo uno dei --prettyformati precotti , come git log --pretty=fuller- questo mostrerà entrambe le date. Se vuoi vedere solo una data, ma impostala come data di commit, puoi usare git log --format=<some stuff>. Tutti i codici consentiti per la definizione del formato sono documentati in git help log. La data di commit è uno dei %cd, %cD, %cr, %cto %ci, a seconda del formato ciò che si preferisce in.

Se è qualcosa che vuoi fare spesso, inseriscilo in un alias o scrivi uno script ausiliario per salvare durante la digitazione.


53

È possibile utilizzare --pretty=formate utilizzare %crper la data di commit relativa.

Per esempio:

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

Puoi definire un alias in git per renderlo più facile da usare. Ho quanto segue nel mio .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

Su Linux o sistemi simili, puoi utilizzare virgolette singole 'invece di virgolette doppie ":

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

Con questo, esegui semplicemente git lolo le altre varianti per vedere il bel risultato.

Ecco l'output di git lol --simplify-by-decoration:

git lol output

  • Sembra buona. :)
  • lolè più facile da scrivere loge suona anche meglio.
    • Ti dà anche accesso al normale git logse ne hai bisogno.
  • I tuoi occhi possono scansionare rapidamente i contenuti con i diversi colori.
  • I nomi e le e-mail sono molto utili per grandi progetti / organizzazioni con molti contributori.
  • Usare la colorazione predefinita per hash / ref in quanto è già abbastanza buono.

Ecco l'output di git loldcon date in formato ISO. Utile per vedere la data / ora esatta in cui viene effettuato un commit, con il vantaggio di poter vedere facilmente il fuso orario del contributore.

inserisci qui la descrizione dell'immagine

Modifica 2020-06 : aggiunti screenshot. Aggiornato per usare %C(auto)(colorazione automatica / predefinita) per %h(commit hash) e %d(nomi ref). Aggiunto %cn(nome commiter) oltre all'email.


1
Ricevo un errore di analisi: 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: errore di sintassi vicino al token imprevisto `('
frakman1

2
@ frakman1 - devi annullare l'escape delle "s affinché la riga sopra venga eseguita nel terminale
stites

2
Riga corretta: git log --graph --pretty = format: "% C (giallo)% h% Creset% C (cyan)% C (grassetto)% d% Creset% C (cyan) (% cr)% Creset% C (verde)% ce% Creset% s "
RedSands

1

Preferisco questo formato, non include il nome dell'autore e include la data effettiva per il commit.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.