Comment vérifier la date et l'heure de la dernière git pull
exécution? J'ai souvent besoin de savoir quand le code a changé sur un serveur en cas de problème.
91
La git show
commande affiche la date du dernier commit. Ce n'est pas la date à laquelle le commit a été tiré vers le référentiel local, mais Git ne conserve pas ces informations d'extraction.
Vous pourrez peut-être trouver l'heure de la dernière extraction en utilisant le ctime (heure de création) des fichiers sur le serveur. Par exemple:
ls -lct
affiche le ctime de chaque fichier, trié par le plus récent en premier.
git show
affiche la date du commit tip de la branche actuelle, qui n'est pas nécessaire le commit le plus récent dans le repo, et encore moins la date de la dernière extraction / extraction. Je recommande également de vérifier la réponse de smoove.git show
vous indique à quel commit se trouve votre clone local. (Je sais que c'est vieux, mais je me suis retrouvé ici via une recherche.)Vous donnera un horodatage unix de la dernière modification de ce fichier. Git écrit le fichier FETCH_HEAD à chaque fois que vous tirez ou récupérez, même s'il n'y avait rien à extraire.
la source
stat -f '%m' .git/FETCH_HEAD
stat -f '%Sm' $(git rev-parse --show-toplevel)/.git/FETCH_HEAD
.git/refs/heads/master
quel horodatage changera lorsque des changements serontgit pull
apportés à partir de lamaster
branche distante , mais l'horodatage ne changera pas sigit pull
aucun changement n'a été signalé.Sur une intuition, j'ai essayé "stat -c% y .git / FETCH_HEAD", et j'ai obtenu une impression lisible par l'homme de l'heure:
De plus, vous pouvez ajouter
when = !stat -c %y .git/FETCH_HEAD
à la[alias]
section dans votre fichier ~ / .gitconfig (il est plus sûr de le faire automatiquement en exécutant la ligne de commande suivante dans n'importe quel dépôt git)et ensuite vous pouvez trouver cette information avec votre nouvelle "commande", à tout moment:
[Puis il m'est venu à l'esprit de faire "man stat", et j'ai trouvé qu'il y avait un tas d'autres paramètres% disponibles pour le programme "stat". YMMV.]
la source
-c
n'est pas une option validestat
pour Mac.Dans un référentiel non nu (et un référentiel nu n'a pas de sens pour
git pull
), git enregistre toutes les modifications apportées aux conseils de branche et à l'idée de branche actuelle dans "reflogs", dans.git/logs
. Vous pouvez les visualiser en utilisantgit log -g
.Cependant, bien que les fichiers journaux aient des horodatages, il ne semble pas qu'ils
git log -g
les imprimeront. Cependant, si vous regardez.git/logs/HEAD
par exemple, vous verrez que le format est assez simple à analyser - il se compose de ce que la référence (ou HEAD) a changé, changé en, qui l'a changé, quand et un message d'activité.la source
la source
Utilisez python:
python -c "import os;print os.stat('.git/FETCH_HEAD').st_mtime"
la source
ou
la source
Solution Bash multiplateforme (OSX / Linux)
Fortement inspiré par la
@smooves
réponse: https://stackoverflow.com/a/9229377/622276 et commentaires.Mais je maintiens ma propre intégration git prompt bash
Avec la source ici: https://github.com/neozenith/dotfiles/blob/master/bash-scripts/function_parse_git_prompt.sh
msys
La version de Git Bash pour Windows fonctionne de la même manière que la version Linux.Je compile les options multiplateformes dans une déclaration de cas. Ainsi, il lancera un processus d'extraction sur tout dépôt git dans lequel je navigue et qui date de plus de quinze minutes depuis la dernière extraction, de sorte que le reste de mon script d'invite sait si j'ai des choses à extraire.
Le radar Git avait l' habitude de le faire, mais il fallait enregistrer un fichier avec l'horodatage du dernier appel. Cela n'écrit aucun fichier temporaire.
git rev-parse --show-toplevel
signifie simplement que si je suis n'importe où dans un repo git, il obtiendra la racine du repo afin que nous puissions référencer le.git
chemin du dossier.la source
Voici un petit wrapper git. Installez-le avec le nom
git
et avec les droitschmod a+x git
. Puis ajoutezlast_successful_fetch
à.git/info/exclude
.Lorsque vous voulez voir le résultat, utilisez
stat last_successful_fetch
.la source
la source
Comme suggéré par l'utilisateur: https://stackoverflow.com/users/83646/smoove , vous pouvez trouver quand git pull a été appelé pour la dernière fois sur le dépôt en vérifiant l'horodatage de modification de: .git / FETCH_HEAD comme: git écrit le .git / FETCH_HEAD chaque fois que vous tirez ou récupérez, même s'il n'y avait rien à extraire.
Exemple: {master} vinegupt @ bhling69 (/imsgit_local/work/vinegupt/ims_18.5a/ims_common) $ stat -c% y .git / FETCH_HEAD
12/02/2018 02: 01: 50.487160386 +0530
la source
stat -f %Sm .git/FETCH_HEAD
mais semble bien fonctionner pour moi.