我希望 git 为我提供一个列表,其中包含一个用户在所有提交中修改的所有文件。
我的特殊用例是,我参与了 ruby on ails 项目的 i18n,我们想知道哪些文件已经完成,哪些文件仍然需要完成。有问题的用户只在 i18n 上完成了工作,而没有在代码库的其他部分完成工作。所以信息应该都在 git 里,但我不知道怎么把它弄出来。
尝试使用 git log --stat --committer=<user>。只需在 --committer=选项中输入用户名(或者适当地使用 --author=)。
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