我希望能得到git给出的一个列表,其中包含一个用户修改过的所有文件,跨越所有的提交。
我的具体使用场景是我参与了一个Ruby on Rails项目的国际化工作,我们想知道哪些文件已经完成,哪些文件仍然需要完成。这些用户只在国际化方面进行过工作,而没有对代码库的其余部分进行过工作。因此,所有信息都应该在git中,但我不确定如何获取它。
我希望能得到git给出的一个列表,其中包含一个用户修改过的所有文件,跨越所有的提交。
我的具体使用场景是我参与了一个Ruby on Rails项目的国际化工作,我们想知道哪些文件已经完成,哪些文件仍然需要完成。这些用户只在国际化方面进行过工作,而没有对代码库的其余部分进行过工作。因此,所有信息都应该在git中,但我不确定如何获取它。
git log --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u
根据需要将--author切换为--committer。
这不是唯一的方法,但它可行:
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
git log --stat --committer=<user>
,只需将用户名称放在--committer=
选项(或根据需要使用--author=
)即可。这会按提交显示所有文件,因此可能会有一些重复。git log --pretty= --author=@abcd.com --name-only | sort -u | wc -l
git log --pretty= --author=user@abcd.com --name-only | sort -u | wc -l
| wc -l
(正如 joachim 所指出的可能会有误差)。不过,您提供的信息很有用,可以通过电子邮件地址搜索“公司贡献”(尽管这需要一个 .mailmap
文件 才能正确工作,因为有时人们会使用不同的电子邮件地址提交代码)! - Marcus Mangelsdorf