Каков самый простой способ перечислить все файлы в репозитории git, предоставленные определенным пользователем.Показать все файлы, внесенные пользователем, в репо
ответ
Я хотел бы предложить один из эти:
# commit + full message + list of changed files
git log --author="Frank Nord" --stat
# commit + full message
git log --author="Frank Nord"
# just commit + one line message
git log --author="Frank Nord" --format=short
Дополнительные параметры --format
a nd infos на рисунках, поддерживаемых --author
см. git log --help
.
Если вам действительно нужны только файлы, вам необходимо сделать некоторые оглавлению:
git log --author="Frank Nord" --stat --format=oneline | grep -Po "(?<=^).*(?=\|)" | grep -Po "[^ ]+(\s*[^ ]+)*" | sort | uniq
Это дает вам список уникальных путей когда-либо прикасался Франком Nord. Это на самом деле нужно два этапа Grep здесь, Grep иначе error'd с exceeded PCRE's backtracking limit
:)
вы всегда можете использовать Grep для него:
git log | grep -B 2 -A 3 'Author: Timmy'
-B num
означает количество строк, чтобы показать перед матчем и -A num
количество линий после матча
Следующая делает то, что вы хотите, я думаю:
git log --diff-filter=A --author='Someone' --name-only --pretty=format: | sort -u
Обратите внимание, что --diff-filter=A
говорит только файлы отчетов, которые были добавлено, а --pretty=format:
- только для подавления нормального вывода сообщения фиксации от git log
.
Обратите внимание, что это просто показывает добавление файлов в коммиты конкретного автора - в подавляющем большинстве случаев он не будет точно отражать их вклад в проект, например.
Плохая идея. 'git log' имеет встроенные опции для поиска авторов, и это будет намного эффективнее, чем' grep'ing вывода. – vergenzt