使用gitlog时,如何按用户进行筛选,以便只看到该用户的提交?


当前回答

一种可能的替代方法是使用名为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"

完整披露:我是项目的维护者:)

其他回答

git help log

为您提供gitlog的手册页。按/,然后键入“author”,然后按Enter键,在那里搜索“作者”。键入“n”几次以进入相关部分,其中显示:

git log --author="username"

正如已经建议的那样。

注意,这将为您提供提交的作者,但在Git中,作者可以是与提交者不同的人(例如,在Linux内核中,如果您以普通用户身份提交补丁,则可能由其他管理用户提交)?有关详细信息)

大多数时候,人们所说的用户既是提交者,也是作者。

如果要过滤自己的提交:

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

如果使用GitHub:

转到分支机构单击提交

它将以以下格式显示列表

branch_x: < comment> 
author_name committed 2 days ago

看到个人作者的承诺;单击authorname,在那里您可以看到该作者在该分支上的所有提交

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

用法

$ 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 --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

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

一个陷阱:git内部试图将输入<author-name>与git数据库中作者的姓名和电子邮件匹配。它区分大小写。