Как проверить дату и время последнего "git pull", который был выполнен?


Как проверить дату и время последней git pull что казнили? Мне часто нужно знать, когда код изменен на сервере, когда что-то идет не так.

7 70

7 ответов:

The git show команда показывает дату последней фиксации. Это не дата, когда фиксация была перенесена в локальный репозиторий, но Git не хранит такую информацию о вытягивании.

вы можете найти время последнего вытягивания, используя ctime (время создания) файлов на сервере. Например:

ls -lct

показывает ctime каждого файла, отсортированного с самым последним первым.

stat -c %Y .git/FETCH_HEAD

даст вам метку времени unix последней модификации этого файла. Git записывает файл FETCH_HEAD каждый раз, когда вы тянете или извлекаете, даже если ничего не нужно было тянуть.

по догадке, я попробовал " stat-c %y .git/FETCH_HEAD", и получил удобочитаемую распечатку времени:

> stat -c %y .git/FETCH_HEAD
2015-02-24 17:42:08.072094410 -0500

кроме того, вы можете добавить when = !stat -c %y .git/FETCH_HEAD до в свой ~/.файл gitconfig (безопаснее всего сделать это автоматически, запустив следующую командную строку в любом репозитории git)

git config --global alias.when '!stat -c %y .git/FETCH_HEAD'

и тогда вы сможете найти эту информацию с вашей новой "команды", в любое время:

> git when
2015-02-23 15:07:53.086254218 -0500

[затем мне пришло в голову сделать "man stat", и я нашел что есть куча других параметров%, доступных для программы "stat". МММ.]

в "голый" репозиторий (и "голый" репозиторий не имеет смысла git pull), git записывает все изменения в советы ветвей и текущую идею ветви в "reflogs", в .git/logs. Вы можете просмотреть их с помощью git log -g.

однако, хотя файлы журнала имеют метки времени, это не кажется, что git log -g напечатает его. Однако, если вы посмотрите на .git/logs/HEAD например, вы увидите, что формат довольно прост для разбора - он состоит из того, что ref (или HEAD) изменился, изменен на, кто его изменил, когда и сообщение об активности.

использовать python:python -c "import os;print os.stat('.git/FETCH_HEAD').st_mtime"

$ # for the latest pull even if there's nothing new
$ stat -c %y .git/FETCH_HEAD
2017-12-15 11:24:25.000000000 +0100
$ 
$ # for records of updated references
$ git reflog --date=iso
db2bba84 (HEAD -> master, origin/master, origin/HEAD) HEAD@{2017-12-14 11:28:39 +0100}: pull: Fast-forward
37fe73ad HEAD@{2017-12-03 17:09:32 +0100}: pull: Fast-forward
c4107fcd HEAD@{2017-11-27 18:53:40 +0100}: clone: from https://github.com/macports/macports-base
$ 
$ # for a more detailed view of the latter
$ git log -g
commit db2bba84d5e8cd82ec94a19129deb91ef62287bb (HEAD -> master, origin/master, origin/HEAD)
Reflog: HEAD@{0} (me <me@machine.local>)
Reflog message: pull: Fast-forward
Author: Ryan Schmidt <ryandesign@macports.org>
Date:   Wed Dec 13 10:23:47 2017 -0600

    portutil.tcl: Fix renames that supply the -force option

    Treat $options as a list not as a string.

    See: https://trac.macports.org/ticket/55492

[snip]

Как предложил пользователь:https://stackoverflow.com/users/83646/smoove, Вы можете найти, когда git pull последний раз вызывался в репо, проверив временную метку модификации: .git / FETCH_HEAD as: git пишет свое .файл git/FETCH_HEAD каждый раз, когда вы тянете или извлекаете, даже если вам нечего было тянуть.

пример: {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