Могу ли я получить git, чтобы сообщить мне все файлы, измененные одним пользователем?

Я хотел бы, чтобы git предоставил мне список всех файлов, измененных одним пользователем, во всех коммитах.

Мой конкретный вариант использования - это то, что я участвовал в проекте i18n ruby ​​on rails, и мы хотим знать, какие файлы уже были сделаны и какие файлы еще нужно сделать. Пользователи, о которых идет речь, только сделали работу на i18n, а не на остальной части базы кода. Таким образом, информация должна быть в git, но я не уверен, как ее получить.

Ответ 1

Это не единственный способ, но он работает:

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

Или, как одна строка:

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

Ответ 2

Это даст вам простой список файлов, ничего больше:

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

Переключатель --author для --committer при необходимости.

Ответ 3

Попробуйте git log --stat --committer=<user>. Просто поместите имя пользователя в параметр --committer= (или используйте --author=, если это необходимо).

Это будет выплевывать все файлы на фиксацию, поэтому, вероятно, будет некоторое дублирование.