Wie überprüfe ich Datum und Uhrzeit der letzten git pull
Ausführung? Ich muss häufig wissen, wann sich der Code auf einem Server geändert hat, wenn etwas schief geht.
90
Der git show
Befehl zeigt das Datum des letzten Commits an. Dies ist nicht das Datum, an dem das Commit in das lokale Repository gezogen wurde, aber Git speichert solche Pull-Informationen nicht.
Möglicherweise können Sie die Zeit des letzten Abrufs anhand der ctime (Erstellungszeit) der Dateien auf dem Server ermitteln. Beispielsweise:
ls -lct
Zeigt die Uhrzeit jeder Datei an, sortiert nach der neuesten zuerst.
git show
Zeigt das Datum des Tip-Commits des aktuellen Zweigs an, das nicht erforderlich ist, das letzte Commit im Repo, geschweige denn das Datum des letzten Abrufs / Pulls. Ich empfehle auch, die Antwort von smoove zu überprüfen.git show
teilt Ihnen mit, bei welchem Commit sich Ihr lokaler Klon befindet. (Ich weiß, dass dies alt ist, aber ich bin hier über die SucheGibt Ihnen einen Unix-Zeitstempel der letzten Änderung dieser Datei. Git schreibt die FETCH_HEAD-Datei jedes Mal, wenn Sie ziehen oder abrufen, auch wenn nichts zu ziehen war.
quelle
stat -f '%m' .git/FETCH_HEAD
stat -f '%Sm' $(git rev-parse --show-toplevel)/.git/FETCH_HEAD
.git/refs/heads/master
welcher Zeitstempel sich ändert, wenngit pull
Änderungen vom Remote-master
Zweig eingehen. Der Zeitstempel ändert sich jedoch nicht, wenn gemeldet wird, dass keine Änderungen vorliegengit pull
.Aus Versehen habe ich "stat -c% y .git / FETCH_HEAD" ausprobiert und einen für Menschen lesbaren Ausdruck der Zeit erhalten:
Darüber hinaus können Sie
when = !stat -c %y .git/FETCH_HEAD
dem[alias]
Abschnitt in Ihrer ~ / .gitconfig-Datei etwas hinzufügen (dies ist am sichersten, wenn Sie die folgende Befehlszeile in einem beliebigen Git-Repo automatisch ausführen).und dann können Sie diese Informationen jederzeit mit Ihrem neuen "Befehl" finden:
[Dann kam mir der Gedanke, "man stat" zu machen, und ich stellte fest, dass für das 'stat'-Programm eine Reihe anderer% -Parameter verfügbar sind. YMMV.]
quelle
-c
ist keine gültige Optionstat
für Mac.In einem nicht nackten Repository (und ein nacktes Repository macht keinen Sinn für
git pull
) protokolliert git alle Änderungen an Verzweigungstipps und der aktuellen Verzweigungsidee in "Reflogs" in.git/logs
. Sie können diese mit anzeigengit log -g
.Obwohl die Protokolldateien Zeitstempel haben, wird sie nicht
git log -g
gedruckt. Wenn Sie sich.git/logs/HEAD
zum Beispiel einen Blick darauf werfen , werden Sie feststellen, dass das Format recht einfach zu analysieren ist. Es besteht aus dem, was der Ref (oder HEAD) geändert hat, dem, dem, der es geändert hat, wann und einer Aktivitätsnachricht.quelle
quelle
Verwenden Sie Python:
python -c "import os;print os.stat('.git/FETCH_HEAD').st_mtime"
quelle
oder
quelle
Plattformübergreifende (OSX / Linux) Bash-Lösung
Stark inspiriert von der
@smooves
Antwort: https://stackoverflow.com/a/9229377/622276 und Kommentaren.Aber ich behalte meine eigene Bash-Prompt-Git-Integration bei
Mit der Quelle hier: https://github.com/neozenith/dotfiles/blob/master/bash-scripts/function_parse_git_prompt.sh
msys
Die Version in Git Bash für Windows funktioniert identisch mit der Linux-Version.Ich kompiliere die plattformübergreifenden Optionen zu einer case-Anweisung. Es wird also einen Abrufprozess für jedes Git-Repo auslösen, in das ich navigiere, das älter als fünfzehn Minuten seit dem letzten Abruf ist, sodass der Rest meines Eingabeaufforderungsskripts weiß, ob ich etwas zum Abrufen habe.
Git Radar war daran gewöhnt, aber es erforderte das Speichern einer Datei mit dem Zeitstempel, wann der letzte Abruf aufgerufen wurde. Dies schreibt keine temporären Dateien.
git rev-parse --show-toplevel
bedeutet nur, wenn ich irgendwo in einem Git-Repo bin, wird das Repo-Stammverzeichnis abgerufen, sodass wir auf den.git
Ordnerpfad verweisen können .quelle
quelle
Wie vom Benutzer vorgeschlagen: https://stackoverflow.com/users/83646/smoove können Sie feststellen, wann Git Pull zuletzt im Repo aufgerufen wurde, indem Sie den Änderungszeitstempel von: .git / FETCH_HEAD überprüfen, indem: git die .git / schreibt FETCH_HEAD-Datei jedes Mal, wenn Sie ziehen oder abrufen, auch wenn nichts zu ziehen war.
Beispiel: {master} Vinegupt @ bhling69 (/imsgit_local/work/vinegupt/ims_18.5a/ims_common) $ stat -c% y .git / FETCH_HEAD
2018-02-12 02: 01: 50.487160386 +0530
quelle
stat -f %Sm .git/FETCH_HEAD
scheint aber für mich gut zu funktionieren.