1442

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

4

16 回答 16

1998

这适用于gitkgit log - 查看历史的两种最常见的方式。 您不需要使用全名:

git log --author="Jon"

将匹配“Jonathan Smith”所做的提交

git log --author=Jon

git log --author=Smith

也可以。如果您不需要任何空格,引号是可选的。

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

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

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

为了排除特定作者或一组作者使用此问题中所述的正则表达式的提交,您可以将否定前瞻--perl-regexp开关结合使用:

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

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

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/

于 2010-11-24T01:41:29.467 回答
62
git log --author="that user"
于 2010-11-23T19:35:17.753 回答
54

在github上也有一个秘密的方式...

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

于 2014-05-07T10:23:56.370 回答
32
git help log

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

git log --author="username"

正如已经建议的那样。

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

大多数情况下,用户指的是提交者和作者。

于 2010-11-23T19:37:54.603 回答
26

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

用这个 :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"
于 2015-08-11T19:09:05.357 回答
20

如果要过滤自己的提交:

git log --author="<$(git config user.email)>"
于 2016-11-22T13:57:54.933 回答
16
cat | git log --author="authorName" > author_commits_details.txt

这会以文本格式提供您的提交。

于 2013-09-23T06:32:52.060 回答
14

由于另一个问题(可能是错误的?)被锁定,我将把它放在这里:

向作者展示他们的提交计数:

git shortlog -nse

查找特定 USERNAME 的所有提交:

git log --author=USERNAME --oneline --color=never | awk '{print $1}' | xargs git show
于 2017-09-17T15:11:18.190 回答
12

您甚至可以通过简单地使用用户名的一部分来缩写它:

git log --author=mr  #if you're looking for mrfoobar's commits
于 2013-03-24T18:54:37.647 回答
12

试试这个工具 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
于 2017-06-19T12:19:15.853 回答
5

通过在 .bashrc 文件中添加这个小片段,以彩色显示 x 用户的 n 条日志。

gitlog() {
    if [ "$1" ] && [ "$2" ]; then
       git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1" --author="$2"
    elif [ "$1" ]; then
       git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1"
    else
        git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order
    fi
}

alias l=gitlog

要显示 Frank 的最后 10 次提交:

l 10 frank

要显示任何人的最后 20 次提交:

l 20

于 2017-06-09T20:54:27.290 回答
4

如果使用 GitHub:

  • 去分店
  • 点击提交

它将以以下格式显示列表

branch_x: < comment> 
author_name committed 2 days ago
  • 查看单个作者的提交;单击author_name ,您可以在该分支上看到该作者的所有提交
于 2016-08-24T12:43:26.057 回答
3

您可以使用 = 或“空格”。例如以下两个命令返回相同

git log --author="Developer1"

git log --author "Developer1"
于 2018-07-11T18:51:17.977 回答
3

虽然,有很多有用的答案。然而,只是为了添加另一种方式。你也可以使用

git shortlog --author="<author name>" --format="%h %s"

它将以分组方式显示输出:

<Author Name> (5):
  4da3975f dependencies upgraded
  49172445 runtime dependencies resolved
  bff3e127 user-service, kratos, and guava dependencies upgraded
  414b6f1e dropwizard :- service, rmq and db-sharding depedencies upgraded
  a96af8d3 older dependecies removed

<Author Name>在这里,在当前分支下总共完成了 5 次提交。然而,您也可以使用git 存储库中的任何地方(所有分支)--all强制搜索。

一个问题: git 在内部尝试将输入<author name>与 git 数据库中作者的姓名和电子邮件进行匹配。它区分大小写

于 2019-08-19T06:16:52.627 回答
1

我的情况:我正在使用源代码树,我按照以下步骤操作:

  1. 按下CRL+3
  2. 更改下拉作者
  3. 输入名称“Vinod Kumar”

在此处输入图像描述

于 2019-08-15T23:48:36.860 回答
0

一种可能的替代方法是使用一个名为mergestat的工具,它允许您针对 repo 中的提交历史运行 SQL 查询(除其他外)。

mergestat "SELECT * FROM commits WHERE author_name LIKE '%Jon%'"

它有点冗长,但可以灵活地以通用方式具体查找您正在寻找的内容。

例如,过滤掉合并提交并仅显示来自特定作者的过去一年的提交:

mergestat "SELECT * FROM commits WHERE author_name LIKE '%Jon%' WHERE author_when > DATE('now', '-1 year') AND parents < 2"

全面披露:我是该项目的维护者:)

于 2021-12-14T17:58:02.503 回答