题 如何查看只有一个用户提交的git日志?


使用时 git log,我如何按用户过滤,以便我只看到该用户的提交?


963
2017-11-23 19:31


起源


有没有办法直接看到同样的事情 github? - Vadorequest
要在github上执行此操作: stackoverflow.com/a/23515164/26510 - Brad Parks


答案:


这适用于两者 git log 和 gitk  - 观看历史的两种最常见方式。您不需要使用整个名称。

git log --author="Jon"

将匹配“乔纳森史密斯”的提交

git log --author=Jon

git log --author=Smith

也会奏效。如果您不需要任何空格,则引号是可选的。

--all 如果您打算搜索所有分支,而不仅仅是您的仓库中当前提交的祖先。

您还可以轻松匹配多个作者,因为正则表达式是此过滤器的基础机制。因此,要列出Jonathan或Adam的提交,您可以这样做:

git log --author="\(Adam\)\|\(Jon\)"

如上所述,使用正则表达式排除特定作者或作者集的提交 在这个问题上,你可以使用 消极的向前看 与...结合 --perl-regexp 开关:

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

或者,您可以通过使用排除Adam创作的提交 bash 和管道:

git log --format='%H %an' | 
  grep -v Adam | 
  cut -d ' ' -f1 | 
  xargs -n1 git log -1

如果要排除Adam提交(但不一定是创作)的提交,请替换 %an 同 %cn。有关这方面的更多详细信息,请参阅我的博文: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/


1291
2017-11-23 19:35



有没有办法做相反的事情?说 - 我想看看除Jon之外的所有提交。 - Ian Robinson
@Ian和git帮助日志“Jon”是一个正则表达式所以它应该很容易 - sumek
git log --format =%an | egrep -v'Jon *'| xargs -n 1 git log -1 - Adam Dymitruk
任何方式 gitk 遗漏其他作者的家长承诺? (它们以白色圆圈显示。)相反, git log --graph 不显示父提交;它只显示给定作者的提交。我很想看到相同的输出 gitk。 (已经选中了偏好设置和编辑视图 - 找不到任何有用的东西。) - ADTC
请注意这是区分大小写的 - Chiel ten Brinke


git log --author="that user"

39
2018-05-07 10:23





在github上还有一个 秘密 办法...

您可以通过附加param在提交视图中按作者筛选提交 ?author=github_handle。例如,链接 https://github.com/dynjs/dynjs/commits/master?author=jingweno 显示了Dynjs项目的提交列表


38
2017-11-23 19:37



有什么方法可以看到分支?像提交/所有的东西? - whizcreed
你是怎么发现这个的?还支持哪些其他标志? - Woodrow Barlow
pro.mean的答案如何通过界面执行此操作: stackoverflow.com/a/39123694/1225617 - Adam Millerchip


git help log

为您提供git log的联机帮助页。按/然后键入“author”,然后按Enter键搜索“author”。输入“n”几次以进入相关部分,其中显示:

git log --author="username"

如已经建议的那样

请注意,这将为您提供提交的作者,但在Git中,作者可以是与提交者不同的人(例如在Linux内核中,如果您以普通用户身份提交补丁,则可能由另一个管理用户提交) 。)见 Git中作者和提交者之间的区别? 更多细节)

大多数时候,人们所指的是提交者和作者。


27
2017-08-11 19:09



@James我认为你的消极情绪是没有根据的。我只是想告诉他如何从命令行查找它,以防他忘记。我认为你错误地告诉我一个刚刚说RTFM的人,但我在答复中包含了答案。 - ustun
这不是消极情绪。事实上,人们来到这里寻求建议,很多人都希望用RTFM的某些变体做出回应。这对社区来说很糟糕。 - James
@James我必须同意ustun在这里。他 没有 回答问题, 和 他提出了一个寻找答案的策略,这有助于找到其他与git相关的问题的答案。 - Peter
我不认为它像黑白一样。现在,我同意不信任我们应该教育人们如何为自己做事 - 这是一个好主意。在unstun略有错误的地方做出假设a)OP知道如何搜索手册页,更重要的是b)OP知道搜索“作者”。他们可能搜索过“提交者”或“姓名”等。 - John Hunt
@JohnHunt你是对的,我从来没有想过要解释搜索的含义以及当时的做法。有点假设它。略微修复文本。 - ustun


提取更多细节 - (这里 %an 指作者)

用这个 :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"

14
2017-09-23 06:32



如果你想要他们的电子邮件地址使用格式 %ae 代替 %an (给了姓名。) - MarkHu
--author 实际上是按作者姓名而不是提交者名称进行搜索。我会改变 "username" 作者 - Algorithmatic


cat | git log --author="authorName" > author_commits_details.txt

这将以文本格式提交您的提交。


13
2018-03-24 18:54



这是什么目的 cat |? - Keith Thompson


您甚至可以通过简单地使用部分用户名来缩短这一点:

git log --author=mr  #if you're looking for mrfoobar's commits

11
2017-11-22 13:57





如果您想过滤自己的提交:

git log --author="<$(git config user.email)>"

10
2018-06-19 12:19



它也可以在没有引号和括号的情况下工作(至少在git bash和ubuntu bash上)。 - Lavamantis


试试这个工具 https://github.com/kamranahmedse/git-standup

用法

```bash
$ git standup [-a <author name>] 
              [-w <weekstart-weekend>] 
              [-m <max-dir-depth>]
              [-f]
              [-L]
              [-d <days-ago>]
              [-D <date-format>] 
              [-g] 
              [-h]
```

以下是每个标志的描述

- `-a`      - Specify author to restrict search to (name or email)
- `-w`      - Specify weekday range to limit search to (e.g. `git standup -w SUN-THU`)
- `-m`      - Specify the depth of recursive directory search
- `-L`      - Toggle inclusion of symbolic links in recursive directory search
- `-d`      - Specify the number of days back to include
- `-D`      - Specify the date format for "git log" (default: relative)
- `-h`      - Display the help screen
- `-g`      - Show if commit is GPG signed or not
- `-f`      - Fetch the latest commits beforehand

7
2017-08-24 12:43





如果使用GitHub:

  • 去分公司
  • 点击提交

它将以下面的格式显示列表

branch_x: < comment> 
author_name committed 2 days ago
  • 看个人作者的承诺;点击 AUTHOR_NAME  在那里你可以看到该作者在该分支上的所有提交

2
2017-09-17 15:11



这是很多点击并假设托管git repo。不像上面的许多人那样回答CLI。 - lacostenycoder
@lacostenycoder但它是有用的信息,特别是因为很多git项目都在GitHub上! - Adam Millerchip