Posso o git me dizer todos os arquivos que um usuário modificou?


148

Gostaria que o git me desse uma lista de todos os arquivos modificados por um usuário, em todos os commits.

Meu caso de uso específico é que eu estive envolvido no i18n de um projeto ruby ​​on rails e queremos saber quais arquivos já foram executados e quais ainda precisam ser executados. Os usuários em questão só trabalharam no i18n, não no restante da base de códigos. Portanto, todas as informações devem estar no git, mas não sei como divulgá-las.

Respostas:


128

Esta não é a única maneira, mas funciona:

git log --pretty="%H" --author="authorname" |
    while read commit_hash
    do
        git show --oneline --name-only $commit_hash | tail -n+2
    done | sort | uniq

Ou, como uma linha:

git log --pretty="%H" --author="authorname" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq

184

Isso fornecerá uma lista simples de arquivos, nada mais:

git log --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u

Alterne --autor para --committer conforme necessário.


1
--name-onlyparece fazer a saída nada além de nomes de arquivos. Diante desse fato, quais são as opções --state as --pretty=format:""realizações? Você poderia deixá-los de fora?
Jonah

1
@Jonah --pretty = format: "" é necessário. Eu editei a resposta.
Ian Kelling

2
funciona muito bem, apesar de uma pequena falha: produz um link em branco no início da saída, o que significa que o canal do resultado através de 'wc -l' para obter uma contagem de arquivos está desativado por 1.
joachim

como posso excluir arquivos que foram excluídos?
Tim Boland

8

Tente git log --stat --committer=<user>. Basta colocar o nome do usuário na --committer=opção (ou usar --author=conforme apropriado).

Isso cuspirá todos os arquivos por confirmação, portanto, provavelmente haverá alguma duplicação.


0
git log --pretty= --author=@abcd.com --name-only | sort -u | wc -l

Mostra todos os arquivos modificados por empresa no repositório git.

git log --pretty= --author=user@abcd.com --name-only | sort -u | wc -l

Mostra todos os arquivos modificados pelo nome do autor 'user' no repositório git.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.