如何查看仅一个用户提交的 git 日志?

使用git log ,如何按用户筛选,以便仅看到该用户的提交?

答案

这适用于git loggitk查看历史记录的两种最常见方式。您不需要使用全名。

git log --author="Jon"

将匹配 “乔纳森 · 史密斯” 的承诺

git log --author=Jon

git log --author=Smith

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

如果要搜索所有分支,而不是仅搜索--all当前提交的祖先,请添加--all

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

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替换%an %cn 。有关此操作的更多详细信息,请参见我的博客文章: http : //dymitruk.com/blog/2012/07/18/filtering-by-author-name/

git log --author="that user"

在 github 上还有一个秘密的方法...

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

git help log

给你 git log 的手册页。通过按 /,然后键入 “作者”,然后按 Enter,在此处搜索 “作者”。多次键入 “n” 以转到相关部分,其中显示:

git log --author="username"

正如已经建议的那样。

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

在大多数情况下,所谓的用户既是提交者又是作者。

详细信息 -(此处%an指作者)

用这个 :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"
cat | git log --author="authorName" > author_commits_details.txt

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

如果要过滤自己的提交:

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

您甚至可以简单地使用一部分用户名来缩写一下:

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

试试这个工具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

由于另一个问题(可能是错误地错了?)被锁定,因此我将其放在这里:

向作者显示提交计数:

git shortlog -nse

查找特定 USERNAME 的所有提交:

git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show