2010-08-10 73 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)'