Как я могу проверить дату и время последнего git pull
исполнения? Мне часто нужно знать, когда код меняется на сервере, когда что-то идет не так.
91
Команда git show
показывает дату самой последней фиксации. Это не дата, когда фиксация была извлечена в локальный репозиторий, но Git не хранит такую информацию извлечения.
Вы можете узнать время последнего извлечения, используя ctime (время создания) файлов на сервере. Например:
ls -lct
показывает ctime каждого файла, отсортированного самым последним первым.
git show
показывает дату фиксации подсказки текущей ветки, которая не является обязательной для самой последней фиксации в репо, не говоря уже о дате последней выборки / извлечения. Я также рекомендую проверить ответ smoove.git show
сообщает вам, в каком коммите находится ваш локальный клон. (Я знаю, что это старый, но я оказался здесь через поиск.)Выдаст вам временную метку unix последней модификации этого файла. Git записывает файл FETCH_HEAD каждый раз, когда вы извлекаете или извлекаете, даже если тянуть нечего.
источник
stat -f '%m' .git/FETCH_HEAD
stat -f '%Sm' $(git rev-parse --show-toplevel)/.git/FETCH_HEAD
.git/refs/heads/master
какой из них будет изменена метка времени, когда вgit pull
результате будут поступать изменения из удаленнойmaster
ветки, но метка времени не изменится, если будет сообщеноgit pull
об отсутствии изменений.Думая, я попробовал "stat -c% y .git / FETCH_HEAD" и получил удобочитаемую распечатку времени:
Кроме того, вы можете добавить
when = !stat -c %y .git/FETCH_HEAD
в[alias]
раздел вашего файла ~ / .gitconfig (безопаснее всего сделать это автоматически, запустив следующую командную строку в любом репозитории git)а затем вы сможете найти эту информацию с помощью новой «команды» в любое время:
[Тогда мне пришло в голову сделать "man stat", и я обнаружил, что есть множество других% параметров, доступных для программы "stat". YMMV.]
источник
-c
не подходитstat
для Mac.В репозитории,
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"
источник
или
источник
Кросс-платформенное (OSX / Linux) решение Bash
Сильно вдохновлен
@smooves
ответом: https://stackoverflow.com/a/9229377/622276 и комментариями.Но я поддерживаю свою собственную интеграцию с подсказкой bash и git
Источник здесь: https://github.com/neozenith/dotfiles/blob/master/bash-scripts/function_parse_git_prompt.sh
msys
версия в Git Bash для Windows работает идентично версии для Linux.Я компилирую кроссплатформенные варианты в оператор case. Таким образом, он будет разветвлять процесс выборки для любого репозитория git, в который я перехожу, который старше пятнадцати минут с момента последней выборки, поэтому остальная часть моего сценария подсказки знает, есть ли у меня что-то вытащить.
Git radar привык к этому, но для этого требовалось сохранить файл с отметкой времени, когда была вызвана последняя выборка. При этом не записываются временные файлы.
git rev-parse --show-toplevel
просто означает, что если я где-нибудь в репозитории git, он получит корень репо, чтобы мы могли ссылаться на.git
путь к папке.# No repo == no more work local REPO_ROOT=`git rev-parse --show-toplevel 2> /dev/null` if [[ -n $REPO_ROOT && -e "$REPO_ROOT/.git/FETCH_HEAD" ]]; then case $OSTYPE in darwin*) local LAST_FETCH="$(stat -f '%m' $REPO_ROOT/.git/FETCH_HEAD)" local FETCH_THRESHOLD="$(date -v-15m +%s)" ;; *) local LAST_FETCH="$(stat -c %Y $REPO_ROOT/.git/FETCH_HEAD)" local FETCH_THRESHOLD="$(date -d'15 minutes ago' +%s)" ;; esac # Fork fetch process in background if [[ $LAST_FETCH -lt $FETCH_THRESHOLD ]]; then git fetch --all --quiet --prune 2> /dev/null & fi fi
источник
Вот небольшая обертка от git. Установите его с именем
git
и с правамиchmod a+x git
. Затем добавьтеlast_successful_fetch
в.git/info/exclude
.Если хотите увидеть результат, используйте
stat last_successful_fetch
.источник
источник
Как было предложено пользователем: https://stackoverflow.com/users/83646/smoove , вы можете узнать, когда git pull последний раз был вызван в репо, проверив временную метку модификации: .git / FETCH_HEAD как: git записывает .git / FETCH_HEAD каждый раз, когда вы извлекаете или извлекаете, даже если тянуть было нечего.
Пример: {master} winegupt @ bhling69 (/imsgit_local/work/vinegupt/ims_18.5a/ims_common) $ stat -c% y .git / FETCH_HEAD
2018-02-12 02: 01: 50.487160386 +0530
источник
stat -f %Sm .git/FETCH_HEAD
но, похоже, у меня это хорошо работает.