Могу ли я получить Git, чтобы сказать мне все файлы, которые один пользователь изменил? - PullRequest
129 голосов
/ 14 июня 2011

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

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

Ответы [ 3 ]

170 голосов
/ 15 июня 2011

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

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

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

104 голосов
/ 15 июня 2011

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

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
6 голосов
/ 14 июня 2011

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

Это выложит все файлы за коммит, так что, скорее всего, будет некоторое дублирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...