Eu sei como recuperar a data da última modificação de um único arquivo em um repositório git:
git log -1 --format="%ad" -- path/to/file
Existe uma maneira simples e eficiente de fazer o mesmo para todos os arquivos atualmente presentes no repositório?
git ls-tree -r --name-only HEAD | while read filename; do echo "$(git log -1 --format="%ai" -- $filename) $filename"; done | sort
Essa abordagem também trabalha com nomes de arquivos que contêm espaços:
Exemplo de saída:
A saída pode ser classificada pelo carimbo de data / hora da modificação, adicionando
| sort
ao final:fonte
Este é um pequeno ajuste na resposta de Andrew M. (Não pude comentar sua resposta.)
Coloque o primeiro nome do arquivo $ entre aspas duplas , para suportar nomes de arquivos com espaços incorporados.
Saída de amostra:
Agradeço que a solução de Andrew (baseada em ls-tree ) funcione com repositórios simples! (Isso não se aplica a soluções que usam ls-files.)
fonte
Aqui está a versão da casca do peixe da resposta de Andrew M, para aqueles que usam peixe.
Eu guardo isso como uma função de peixe para facilitar o acesso.
fonte
Para aqueles de nós que usam Windows e PowerShell, a resposta de Andrew M, com o ajuste legível por computador:
Exemplo de saída:
fonte