没有作者提交的Git日志

时间:2013-07-25 18:08:02

标签: git

我们正在开发一个项目,其中大多数提交都是由前端开发人员添加的。他主要编辑的HTML,CSS,JavaScript文件与我正在帮助的后端工作无关。如果我可以显示前端开发人员添加的git log减去提交,那将是很好的,因此我可以获得与后端相关的提交视图。

我可以传递给git log的选项,允许我 排除 作者的所有提交吗?我只想排除这一个开发者的提交, 我仍然关心查看来自其他开发者的提交

4 个答案:

答案 0 :(得分:5)

您需要Regular expression to match a line that doesn't contain a word? Negative lookahead这样做,但您必须要求git使用--perl-regexp

git log --author='^(?!krlmlr).*$' --perl-regexp

根据git help log

  

--perl-regexp ...需要编译libpcre。

显然,并非所有git都有这个;对于Ubuntu 13.04附带的产品,这是开箱即用的。

答案 1 :(得分:3)

git rev-list --format='%aN' --all \
| sed 'N;/\nauthorname$/d;s/commit \(.*\)/\n.*/\1/' \
| git log --stdin

当然可以替换上面--all所需的任何头像。

编辑:列表/选择/处理这样的管道是面包和黄油,它就是如何构建git(就像很多unix工具一样)。

答案 2 :(得分:0)

我认为this article清楚地解释了这一点。 (虽然在@trojanfoe链接下提到过)。主要是,它说:

  

然而,如本文所述,使用正则表达式排除特定作者或作者集的提交是很棘手的。相反,转向bash和管道,你可以排除Adam撰写的提交:

git log --format='%H %an' |  # get a list of all commit hashes followed by the author name
grep -v Adam |             # match the name but return the lines that *don't* contain the name
cut -d ' ' -f1 |           # from this extract just the first part of the line which is commit ref
xargs -n1 git log -1       # call git log from that commit stopped after 1 commit
  

这样做的一个限制是您想要的某些日志选项不可用,例如--graph   由于多次调用git log的机制。

答案 3 :(得分:0)

使用更灵活

git log -i --author="^((?!abc).)*$" --perl-regexp

代替

git log -i --author="^(?!abc).*$" --perl-regexp

区别在于,后者仅排除以abc开头的作者,即作者abcddd,但不包括ddabcddddabc等,而前者将排除所有这些示例 :) 请参见this post

中的查找包含或不包含某些单词的行

我已经在 Windows 10 上使用 Git 测试了这两个。