我能让 git 告诉我一个用户修改过的所有文件吗?

我希望 git 为我提供一个列表,其中包含一个用户在所有提交中修改的所有文件。

我的特殊用例是,我参与了 ruby on ails 项目的 i18n,我们想知道哪些文件已经完成,哪些文件仍然需要完成。有问题的用户只在 i18n 上完成了工作,而没有在代码库的其他部分完成工作。所以信息应该都在 git 里,但我不知道怎么把它弄出来。

41487 次浏览

尝试使用 git log --stat --committer=<user>。只需在 --committer=选项中输入用户名(或者适当地使用 --author=)。

这将显示每次提交的所有文件,因此可能会有一些重复。

这不是唯一的方法,但是很有效:

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 --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u

必要时将作者切换为提交者。

git log --pretty= --author=@abcd.com --name-only | sort -u | wc -l

在 git 回购中显示所有按公司修改的文件。

git log --pretty= --author=user@abcd.com --name-only | sort -u | wc -l

在 git repo 中按作者名“ user”显示所有修改过的文件。

如果只想要文件名列表:

Git log —— author = —— pretty = format:% h | xargs git diff —— name-only | sort | uniq