Existe-t-il un moyen pour que git-reflog affiche une date à côté de chaque entrée?

305

La commande git-reflog n'affiche pas par défaut une date à côté de chaque entrée, ce qui me semble être une étrange erreur; Je pense que ce serait très utile.

Existe-t-il des options de ligne de commande, ou d'autres modifications, qui peuvent être utilisées pour l'afficher lorsque chaque entrée de reflog a été ajoutée? La page de manuel n'est pas disponible ...

Andrew Ferrier
la source

Réponses:

453

Au fur et à mesure de l'écriture de la page de manuel, vous pouvez utiliser les options pour git log, par exemple, git reflog --pretty=shortou tout autre comme vous le souhaitez

essayer

git reflog --date=iso
Balog Pal
la source
11
Cela remplace le numéro de tête (ou quel que soit le terme correct) par la date. Pouvez-vous avoir les deux?
Marco Eckstein
7
@Marco il semble que vous devez utiliser un format personnalisé: git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'. J'ai ajouté un alias pour cela: github.com/blueyed/dotfiles/commit/…
blueyed
1
@blueyed Pas tout à fait la même chose - la --date=isocommande reflog indique quand cette entrée reflog a été créée, pas l'heure de la validation. Appréciez toujours votre alias, car je l'ai utilisé pour faire un reflog plus joli.
Johan Henkens
36

Vous pouvez utiliser la --walk-reflogsvariante de git log:

git log -g

C'est assez bavard par défaut et imprime la date entre autres. Vous pouvez le formater avec le --pretty=drapeau standard .

Vous pouvez également utiliser la commande reflog directement avec l' --pretty=indicateur pour formater la sortie.

git reflog --pretty='%cd %h %gd %gs'

Dans le format ci-dessus, %cdaffiche la date de validation à gauche de la sortie de reflog normale.

Klas Mellbourn
la source
9
%cd, montre la date du commit vers laquelle le reflog pointe, malheureusement, ce n'est pas ce que je (ou l'OP) est après: nous voulons la date de l'entrée du reflog.
Thanatos
10
git log --walk-reflogs --date=isovient de faire ma journée
Alois Mahdal
7

Vous devez utiliser un format personnalisé:

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'

Dans le format ci-dessus, %hest le hachage de validation, %crla date de validation relative, %gsle sujet de reflog et %sle sujet de validation. Regardez les documents git-log pour d'autres espaces réservés possibles. Par exemple, utiliser %ciau lieu de %craffichera les dates de validation absolues.

Vous pouvez l'enregistrer dans votre ~ / .gitconfig en utilisant un prettyformat personnalisé et vous y référer via un alias:

[alias]
    rl = reflog --pretty=reflog
[pretty]
    reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)
bleutés
la source
1
Le problème avec cela, c'est que %gdla date ne s'affiche pas @{now}. Lors de la recherche du reflog, connaître l'heure exacte peut être très important ("Je sais qu'il était dans le bon état à 8h57" par exemple).
ErikE
2
@ErikE - Modifiez simplement le crpour ciobtenir l'horodatage complet de chaque action:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4
6

Dites gitdans quel format, soit les reflogentrées comptées ou les reflogentrées chronométrées , c'est-à-dire

$ git reflog @{now}

$ git reflog @{0}
gitster
la source
Le programmeur en moi n'aime pas les dates du "langage naturel" à l'intérieur du {}, mais heureusement, cette technique fonctionne également avec --date=iso.
mwfearnley
5

Remarque git 2.10 (Q3 2016) améliore la documentation sur la date avec git reflog.

Voir commit 642833d , commit 1a2a1e8 (27 juil. 2016) et commit d38c7b2 , commit 522259d , commit 83c9f95 , commit 2b68222 (22 juil. 2016) par Jeff King ( peff) .
Aidé par: Jeff King ( peff) .
(Fusionné par Junio ​​C Hamano - gitster- en commit 0d32799 , 08 août 2016)

Les rev-listoptions sont mises à jour :

L'indicateur de reflog dans la sortie peut être affiché comme ref@{Nth}(où Nthest l'index chronologique inverse dans le reflog) ou comme ref@{timestamp}(avec l'horodatage de cette entrée), en fonction de quelques règles.

Il comprend : - une mise à jour sur --date=raw:

affiche la date en secondes depuis l'époque (1970-01-01 00:00:00 UTC), suivie d'un espace, puis du fuseau horaire en tant que décalage par rapport à UTC (a +ou -à quatre chiffres; les deux premiers sont des heures, et les deux secondes sont des minutes).
C'est-à-dire, comme si l'horodatage était formaté avec strftime("%s %z")).
Notez que l' -localoption n'affecte pas la seconds-since-epoch valeur (qui est toujours mesurée en UTC), mais change la valeur de fuseau horaire associée.

Et une nouvelle option: --date=unix

affiche la date sous forme d'horodatage d'époque Unix (secondes depuis 1970).
Comme avec --raw, c'est toujours en UTC et -localn'a donc aucun effet.

VonC
la source