J'essaye d'afficher le dernier commit dans Git, mais j'ai besoin de la date dans un format spécial.
Je sais que le joli format du journal %ad
respecte le --date
format, mais le seul --date
format que je peux trouver est "court". Je veux connaître les autres et savoir si je peux en créer un personnalisé tel que:
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
la source
la source
--date=iso-strict
: voir ma réponse ci--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, vous aurez également:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Réponses:
Les autres sont (de
git help log
):Il n'y a pas de moyen intégré que je connaisse pour créer un format personnalisé, mais vous pouvez faire de la magie du shell.
La première étape ici vous donne un horodatage en millisecondes. Vous pouvez modifier la deuxième ligne pour formater cet horodatage comme vous le souhaitez. Cet exemple vous donne quelque chose de similaire à
--date=local
, avec une journée rembourrée.Et si vous voulez un effet permanent sans le taper à chaque fois, essayez
Ou, pour avoir un effet sur toute votre utilisation git avec ce compte
la source
git config log.date iso
ou, pour un effet sur toute votre utilisation git avec ce comptegit config --global log.date iso
--format:<args>
passera<args>
à strftime.En plus
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, comme d'autres l'ont mentionné, vous pouvez également utiliser un format de date de journal personnalisé avecCela produit quelque chose comme
2016-01-13 11:32:13
.REMARQUE: Si vous regardez le commit lié ci-dessous, je pense que vous en aurez besoin au moins Git v2.6.0-rc0pour que cela fonctionne.
Dans une commande complète, ce serait quelque chose comme:
Je n'ai pu trouver cela dans la documentation nulle part (si quelqu'un sait où le trouver, veuillez commenter), donc j'ai initialement trouvé les espaces réservés par essais et erreurs.
Dans ma recherche de documentation à ce sujet, j'ai trouvé un commit sur Git lui - même qui indique que le format est alimenté directement
strftime
. En recherchantstrftime
( ici ou ici ) les espaces réservés que j'ai trouvés correspondent aux espaces réservés répertoriés.Les espaces réservés incluent:
Dans une commande complète, ce serait quelque chose comme
la source
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
et j'obtiens toujours l'erreur suivante.fatal: unknown date format format:%Y-%m-%d %H:%M:%S
. J'exécute git sur windows. Voici ma version git.git version 1.9.5.msysgit.1
. Dois-je donc passer à la nouvelle version?%X
, ~~ Je viens de l'essayer sur ma machine et j'ai définitivement des heures dans mon fuseau horaire. ~~ Hmm, maintenant je ne suis pas sûr. J'ai cloné un repo d'une personne qui n'est pas dans mon fuseau horaire et j'ai réessayé. Je pense que je ne fais que mettre l'heure au format en utilisant les paramètres régionaux actuels, mais avec le fuseau horaire coupé.Après avoir longtemps cherché un moyen d'obtenir la
git log
sortie de la date au formatYYYY-MM-DD
d'une manière qui fonctionneraitless
, j'ai proposé le format suivant:avec l'interrupteur
--date=iso
.Cela imprimera la date au format ISO (un long), puis imprimera 14 fois le caractère de retour arrière (0x08), ce qui, dans mon terminal, supprime efficacement tout après la partie AAAA-MM-JJ. Par exemple:
Cela donne quelque chose comme:
Ce que j'ai fait, c'est créer un alias nommé
l
avec quelques ajustements sur le format ci-dessus. Il montre le graphe de validation à gauche, puis le hachage du commit, suivi de la date, des noms courts, des refnames et du sujet. L'alias est le suivant (dans ~ / .gitconfig):la source
--date=short shows only date but not time, in YYYY-MM-DD format.
| sort | uniq
ne fonctionnent pas.%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)
pour obtenir le format2015-01-19 11:27 (11 days)
. +1Vous pouvez utiliser l'option de troncature de champ pour éviter autant de
%x08
caractères. Par exemple:est équivalent à:
Et un peu plus facile pour les yeux.
Mieux encore, pour cet exemple particulier, l'utilisation
%cd
honorera le--date=<format>
, donc si vous le souhaitezYYYY-MM-DD
, vous pouvez le faire et éviter%<
et%x08
entièrement:Je viens de remarquer que c'était un peu circulaire par rapport au message d'origine, mais je le laisserai au cas où d'autres arriveraient ici avec les mêmes paramètres de recherche que moi.
la source
J'avais besoin de la même chose et j'ai trouvé ce qui suit fonctionnant pour moi:
La
--date=format
forme la sortie de la date où le--pretty
dit quoi imprimer.la source
git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
Attention au
date=iso
format " ": ce n'est pas exactement ISO 8601 .Voir commit " 466fb67 " de Beat Bolli (
bbolli
) , pour Git 2.2.0 (novembre 2014)pretty: fournir un format de date ISO 8601 strict
Consultez ce fil de discussion.
la source
Notez que cela sera converti dans votre fuseau horaire local, au cas où cela importe pour votre cas d'utilisation.
la source
Git 2.7 (Q4 2015) introduira
-local
comme instruction.Cela signifie qu'en plus de:
vous aurez également:
Le
-local
suffixe ne peut pas être utilisé avecraw
ourelative
. Référence .Vous pouvez maintenant demander n'importe quel format de date en utilisant le fuseau horaire local . Voir
johnkeeping
) .Voir commit add00ba , commit 547ed71 (03 septembre 2015) par Jeff King (
peff
) .(Fusionné par Junio C Hamano -
gitster
- en commit 7b09c45 , 05 oct 2015)En particulier, le dernier d'en haut (commit add00ba) mentionne:
la source
format-local
travaux aussi! C'est donc très parfait qui fusionne la puissance entre le format préféré et le local.L'option de format
%ai
était ce que je voulais:la source
Avec Git 2.21 (Q1 2019), un nouveau format de date "
--date=human
" qui transforme sa sortie en fonction de la distance entre l'heure et l'heure actuelle a été introduit ."
--date=auto
" peut être utilisé pour utiliser ce nouveau format lorsque la sortie est envoyée vers le téléavertisseur ou le terminal et sinon le format par défaut.Voir commit 110a6a1 , commit b841d4f (29 janvier 2019) et commit 038a878 , commit 2fd7c22 (21 janvier 2019) par Stephen P. Smith (``) .
Voir commit acdd377 (18 janvier 2019) par Linus Torvalds (
torvalds
) .(Fusionné par Junio C Hamano -
gitster
- in commit ecbe1be , 07 févr.2019 )Git 2.24 (Q4 2019) a simplifié le code.
Voir commit 47b27c9 , commit 29f4332 (12 septembre 2019) par Stephen P. Smith (``) .
(Fusionné par Junio C Hamano -
gitster
- dans commit 36d2fca , 07 octobre 2019)la source
la source
Utilisez Bash et la commande de date pour convertir un format de type ISO à celui de votre choix. Je voulais un format de date en mode organisationnel (et un élément de liste), alors j'ai fait ceci:
Et le résultat est par exemple:
la source