2010-08-10 44 views
5

有没有一种标准的方式来列出其他人(即不是我自己)在git仓库中提交的所有提交?列出其他人提交的提交(即不是我)?

我试过git log --not --author=username,但看起来--not只适用于修订。 git log的联机帮助页似乎没有提供反转谓词的方法,如--author

(我用git-svn在工作,想办法,看看有什么,因为我去年在最后X天跑git svn rebase,或者更一般的同事发生了变化。一般来说,我知道我的改变,我只是想看看哪些文件已被别人感动/阅读他们提交日志消息/也许审查有趣的补丁/等)

编辑:精制范围,我其实是“自去年git svn rebase”比更感兴趣的是“最近”。

+0

看起来你应该能够避免这个作者搜索。我不使用git-svn,但是'git svn rebase'被记录为获取然后重新绑定,所以它肯定会更新'refs/remotes/git-svn'中的refs。你不能只是做'git log master @ {1} .. git-svn'吗? – Cascabel 2010-08-10 13:23:24

+0

我可以很容易地看到我用git log git-svn...来表示我的“unpushed”补丁,反之亦然,但我真正想要的是能够看到其他人最近3天所做的更改。正如你所说,作者搜索似乎是唯一的方法,因为提交对象/斑点等被'git svn rebase'重写。 – RobM 2010-08-10 15:03:32

+0

再次,'git log git-svn'或'git log master @ {1} .. git-svn'有什么问题?历史看起来不应该像'-o-o-o(git-svn)-o-o-o(master)'? – Cascabel 2010-08-10 15:22:13

回答

5

这不是一个真正的解决方案,但对于它的价值,你可以使用--author使用正则表达式匹配的事实来拼凑一些东西。如果你的名字是,例如Jefromi:

git log --author='^[^J]\|J[^e]\|Je[^f]' # and so on 

这是非常糟糕的,但它可能是足够你的目的。 (和它的短,如果没有其他人的名字有相同的字母作为你的开始。)

至于最近,除了使用树枝来缩小范围(start..end^stop1 ^stop2 branch,等等),你可以只使用--since=<date>选项。

+0

不是一个坏主意!你知道正则表达式'git log'使用什么味道吗? – RobM 2010-08-10 14:56:44

+0

@RobM:Git基本上像grep一样处理正则表达式 - 所有使用它的命令,默认情况下它是基本的正则表达式,然后有'-i'(忽略大小写),'-E'(扩展正则表达式)和'-F '(固定字符串)选项。 – Cascabel 2010-08-10 15:23:05

2
git log --perl-regexp --author='^(?!RobM)' 

说明:将正则表达式锚定到字符串的起始位置^;然后使用预见(?!whatever)禁止在该位置之后出现您的名字。这样,你甚至可以排除几位作者的提交:

git log --perl-regexp --author='^(?!jack|jill)'