J'ai déjà consulté les documents pertinents de git-scm.com et gitref.org , mais je n'arrive pas à comprendre.
Supposons que je souhaite que tous les engagements soient validés pour le mardi 12 novembre 2013. En prenant pour exemple un référentiel existant, je sais que j'ai commis des engagements ce jour-là, ainsi que des engagements de la veille et du lendemain.
2013-11-11
et 2013-11-12
Tout ce qui suit m’engage pour les 11 et 12 novembre:
git log --after="2013-11-11" --until="2013-11-12"
git log --since="2013-11-11" --until="2013-11-12"
git log --after="2013-11-11" --before="2013-11-12"
git log --since="2013-11-11" --before="2013-11-12"
2013-11-12
seulementTout ce qui suit ne me donne aucun engagement:
git log --since="2013-11-12" --until="2013-11-12"
git log --since="2013-11-12" --before="2013-11-12"
git log --after="2013-11-12" --until="2013-11-12"
git log --after="2013-11-12" --before="2013-11-12"
2013-11-12
et 2013-11-13
Comme prévu (d'après les résultats de 2013-11-11
et 2013-11-12
ci-dessus), tous les éléments suivants me donnent les résultats des 12 et 13 novembre:
git log --since="2013-11-12" --before="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
git log --since="2013-11-12" --until="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
...et ainsi de suite. J'ai l'impression que j'ai essayé toutes les combinaisons possibles de since
, after
, before
et until
, mais je ne parviens toujours pas à trouver la réponse. Je comprends si ces options sont inclusives ou exclusives, puisqu'elles semblent être inclusives si les deux dates sont différentes, mais exclusives si elles se déroulent le même jour. Ai-je raté quelque chose/qu'est-ce que je fais de travers?!
La réponse est de spécifier l'heure, par exemple. git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
J'ai l'habitude de consulter mon journal git et de voir ce que je travaillais un jour spécifique et de mettre à jour ma feuille de temps en fonction de cela, mais il est très pénible de taper la date complète au format ISO, je le fais simplement comme ceci
git log --after=jun9 --before=jun10
et j'ajoute --author
pour n'imprimer que mes commits
git log --since=jun9 --until=jun10 --author=Robert
Ceci affiche les commits qui se sont produits le 9 juin dernier (donc pour 2016 dans ce cas et non pour 2015 ou 2014 et ainsi de suite).
Les paramètres --since/--after
Et --until/--before
Peuvent également contenir des éléments tels que 3 days ago
, yesterday
, etc.
Rien de mal avec la réponse acceptée (que j'ai voté), mais ... nous sommes là pour la science!
Le résultat ci-dessous peut être développé/personnalisé avec pretty=format:<string>
espaces réservés :
git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12
Non protégé à 100% contre les erreurs car la même chaîne aurait pu être entrée par un utilisateur. Mais acceptable en fonction des marques de réservation utilisées. L'extrait ci-dessus n'échouerait pas, par exemple.
On pourrait aussi bien analyser le tout git log
to JSON
et consomme/manipule ses données au contenu de son coeur. Vérifiez https://github.com/dreamyguy/gitlogg et ne regardez jamais en arrière!
Disclaimer: c'est l'un de mes projets.
J'ai créé un pseudonyme à cette fin:
commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"
Usage:
git commitsAtDate 2017-08-18