Posso ottenere git per dirmi tutti i file che un utente ha modificato?


148

Vorrei che Git mi desse un elenco di tutti i file modificati da un utente, in tutti i commit.

Il mio caso d'uso particolare è che sono stato coinvolto nell'i18n di un progetto Ruby on Rails e vogliamo sapere quali file sono già stati eseguiti e quali file devono ancora essere eseguiti. Gli utenti in questione hanno lavorato solo su i18n, non sul resto della base di codice. Quindi le informazioni dovrebbero essere tutte in git, ma non sono sicuro di come farcela.

Risposte:


128

Questo non è l'unico modo, ma funziona:

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

Oppure, come una riga:

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

Questo ti darà un semplice elenco di file, nient'altro:

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

Se necessario, cambia --author per --committer.


1
--name-onlysembra rendere l'output nient'altro che nomi di file. Alla luce di ciò, quali sono le opzioni --state le --pretty=format:""realizzazioni? Potresti lasciarli fuori?
Giona,

1
@Jonah --pretty = format: "" è necessario. Ho modificato la risposta.
Ian Kelling,

2
funziona benissimo, anche se con un piccolo inconveniente: produce un collegamento vuoto all'inizio dell'output, il che significa che il piping del risultato tramite 'wc -l' per ottenere un conteggio dei file è disattivato di 1.
joachim

come posso escludere i file che sono stati eliminati?
Tim Boland,

8

Prova git log --stat --committer=<user>. Basta mettere il nome dell'utente --committer=sull'opzione (o utilizzare --author=come appropriato).

Questo sputerà tutti i file per commit, quindi probabilmente ci sarà qualche duplicazione.


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

Mostra tutti i file modificati dall'azienda nel repository git.

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

Mostra tutti i file modificati in base al nome dell'autore 'user' nel repository git.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.