Como verifico a data e a hora da última git pull
execução executada? Freqüentemente, preciso saber quando o código foi alterado em um servidor quando algo deu errado.
91
o git show
comando mostra a data do commit mais recente. Esta não é a data em que o commit foi puxado para o repositório local, mas o Git não mantém essas informações de pull.
Você pode encontrar a hora da última puxada usando o ctime (hora de criação) dos arquivos no servidor. Por exemplo:
ls -lct
mostra o ctime de cada arquivo, classificado com o mais recente primeiro.
git show
mostra a data do commit de ponta do branch atual, que não é necessário o commit mais recente no repo, muito menos a data do último fetch / pull. Recomendo também verificar a resposta do smoove.git show
informa em qual commit seu clone local está. (Eu sei que isso é antigo, mas acabei aqui através da pesquisa.)Fornecerá um carimbo de data / hora Unix da última modificação daquele arquivo. Git grava o arquivo FETCH_HEAD toda vez que você puxa ou busca, mesmo se não houver nada para puxar.
fonte
stat -f '%m' .git/FETCH_HEAD
stat -f '%Sm' $(git rev-parse --show-toplevel)/.git/FETCH_HEAD
.git/refs/heads/master
qual terá seu carimbo de data / hora alterado quandogit pull
resultar em alterações vindas domaster
branch remoto , mas o carimbo de data / hora não será alterado quando osgit pull
relatórios não houver alterações.Em um palpite, tentei "stat -c% y .git / FETCH_HEAD" e obtive uma impressão legível da época:
Além disso, você pode adicionar
when = !stat -c %y .git/FETCH_HEAD
à[alias]
seção em seu arquivo ~ / .gitconfig (é mais seguro fazer isso automaticamente executando a seguinte linha de comando em qualquer repositório git)e então você pode encontrar essas informações com seu novo "comando", a qualquer momento:
[Então me ocorreu fazer "man stat" e descobri que há vários outros parâmetros% disponíveis para o programa 'stat'. YMMV.]
fonte
-c
não é uma opção válidastat
para Mac.Em um repositório não
git pull
vazio (e um repositório vazio não faz sentido ), o git registra todas as mudanças nas dicas de branch e a ideia de branch atual em "reflogs", em.git/logs
. Você pode ver isso usandogit log -g
.No entanto, embora os arquivos de log tenham carimbos de data / hora, não parece que
git log -g
irá imprimi-los. No entanto, se você der uma olhada,.git/logs/HEAD
por exemplo, verá que o formato é bastante simples de analisar - consiste no que o ref (ou HEAD) mudou de, mudou para, quem mudou, quando e uma mensagem de atividade.fonte
fonte
Use python:
python -c "import os;print os.stat('.git/FETCH_HEAD').st_mtime"
fonte
ou
fonte
Solução Bash de plataforma cruzada (OSX / Linux)
Fortemente inspirado pela
@smooves
resposta: https://stackoverflow.com/a/9229377/622276 e comentários.Mas estou mantendo minha própria integração git do prompt bash
Com a fonte aqui: https://github.com/neozenith/dotfiles/blob/master/bash-scripts/function_parse_git_prompt.sh
msys
A versão no Git Bash para Windows funciona de forma idêntica à versão do Linux.Estou compilando as opções de plataforma cruzada em uma declaração de caso. Portanto, ele bifurcará um processo de busca em qualquer repositório git em que navegar e que tenha mais de quinze minutos desde a última busca, para que o resto do meu script de prompt saiba se tenho algo para extrair.
O radar Git costumava fazer isso, mas exigia salvar um arquivo com o carimbo de data / hora de quando a última busca foi chamada. Isso não grava arquivos temporários.
git rev-parse --show-toplevel
apenas significa que se eu estiver em qualquer lugar em um repo git, ele obterá a raiz do repo para que possamos fazer referência ao.git
caminho da pasta.fonte
Aqui está um pequeno invólucro do git. Instale-o com o nome
git
e com os direitoschmod a+x git
. Em seguida, adicionelast_successful_fetch
a.git/info/exclude
.Quando quiser ver o resultado, use
stat last_successful_fetch
.fonte
fonte
Conforme sugerido pelo usuário: https://stackoverflow.com/users/83646/smoove , você pode descobrir quando git pull foi chamado pela última vez no repo verificando o timestamp de modificação de: .git / FETCH_HEAD como: git grava o .git / FETCH_HEAD arquivo toda vez que você puxa ou busca, mesmo se não houver nada para puxar.
Exemplo: {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
fonte
stat -f %Sm .git/FETCH_HEAD
mas parece funcionar bem para mim.