1

列出特定用户贡献的 git repo 中所有文件的最简单方法是什么。

4

3 回答 3

2

我认为以下内容可以满足您的要求:

git log --diff-filter=A --author='Someone' --name-only --pretty=format: | sort -u

请注意,--diff-filter=A表示仅报告已添加的文件,而--pretty=format:只是为了抑制提交消息的正常输出git log

请注意,这只是显示特定作者在提交中添加的文件 - 例如,在绝大多数情况下,它不会准确反映他们对项目的贡献。

于 2012-07-02T08:31:44.007 回答
2

我会建议其中之一:

# 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和信息,--author请参阅git log --help

如果你真的只需要文件,你需要做一些 grepping:

git log --author="Frank Nord" --stat --format=oneline | grep -Po "(?<=^ ).*(?=\|)" | grep -Po "[^ ]+(\s*[^ ]+)*" | sort | uniq

这为您提供了 Frank Nord 曾经接触过的独特路径的列表。它实际上需要两个阶段的grep,否则grep会出错exceeded PCRE's backtracking limit:)

于 2012-07-02T05:20:09.927 回答
0

你总是可以使用 grep :

git log | grep -B 2 -A 3 'Author: Timmy'

-B num表示匹配前显示的行-A num数和匹配后的行数

于 2012-07-02T05:13:18.817 回答