Comment configurer 'git log' pour afficher 'commit date'

127

Comment puis-je configurer git logpour afficher commit dateau lieu de author date?

Michael
la source
25
@Colleen Chaque commit a deux dates associées - AuthorDate et CommitDate ( git show --pretty=fuller HEADpour voir un exemple). Pour le développement local, ce sont généralement les mêmes, mais pour les correctifs ajoutés par courrier électronique ou par d'autres mécanismes, ils peuvent différer, où la AuthorDate est la date à laquelle le correctif a été généré, et le CommitDate étant quand il a été réellement appliqué au référentiel.
twalberg

Réponses:

145

Il existe plusieurs options pour imprimer la date. Le plus simple est probablement d'utiliser simplement l'un des --prettyformats précuits , comme git log --pretty=fuller- cela affichera les deux dates. Si vous ne voulez voir qu'une seule date, mais en faire la date de validation, vous pouvez utiliser git log --format=<some stuff>. Tous les codes autorisés pour définir le format sont documentés dans git help log. La commettras ce jour est l' un des %cd, %cD, %cr, %ctou %ci, selon le format que vous préférez dans.

Si c'est quelque chose que vous voulez faire souvent, mettez-le dans un alias ou écrivez un script auxiliaire pour économiser lors de la frappe.

Twalberg
la source
53

Vous pouvez utiliser --pretty=formatet utiliser %crpour la date de validation relative.

Par exemple:

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

Vous pouvez définir un alias dans git pour rendre cela plus facile à utiliser. J'ai ce qui suit dans mon .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

Sur Linux ou des systèmes similaires, vous pouvez utiliser des guillemets simples 'au lieu de guillemets doubles ":

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

Avec cela, exécutez simplement git lolou les autres variantes pour voir la jolie sortie.

Voici la sortie de git lol --simplify-by-decoration:

sortie git lol

  • Ça à l'air bon. :)
  • lolest plus facile à taper que loget sonne mieux aussi.
    • Vous donne également accès au régulier git logsi jamais vous en avez besoin.
  • Vos yeux peuvent scanner le contenu rapidement par les différentes couleurs.
  • Les noms et e-mails sont très utiles pour les grands projets / organisations avec de nombreux contributeurs.
  • Utiliser la coloration par défaut pour hash / ref car c'est déjà assez bon.

Voici la sortie de git loldavec les dates au format ISO. Utile pour voir la date / heure exacte d'un commit, avec en prime de pouvoir voir facilement le fuseau horaire du contributeur.

entrez la description de l'image ici

Edit 2020-06 : Ajout de captures d'écran. Mise à jour pour utiliser %C(auto)(coloration automatique / par défaut) pour %h(commit hash) et %d(ref names). Ajouté %cn(nom du commissaire) en plus de l'email.

Raychi
la source
1
git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\"
J'obtiens
2
@ frakman1 - vous devez dé-échapper les "s pour que la ligne ci-dessus s'exécute dans le terminal
stite le
2
Ligne corrigée: git log --graph --pretty = format: "% C (jaune)% h% Creset% C (cyan)% C (gras)% d% Creset% C (cyan) (% cr)% Creset% C (vert)% ce% Creset% s "
RedSands
1

Je préfère ce format, n'inclut pas le nom de l'auteur et inclut la date réelle de validation.

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