如何查看一个用户的git日志';他犯了什么罪?

如何查看一个用户的git日志';他犯了什么罪?,git,version-control,git-log,Git,Version Control,Git Log,使用git log时,如何按用户筛选,以便只看到该用户的提交 git log --author="that user" 提供git日志的主页。按/然后键入“author”,然后按Enter,在此处搜索“author”。键入“n”几次,进入相关部分,显示: git log --author="username" 如前所述 请注意,这将为您提供提交的作者,但在Git中,作者可以是与提交者不同的人(例如,在Linux内核中,如果您以普通用户身份提交修补程序,它可能由另一个管理用户提交。)有关更多详

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

git log --author="that user"
提供git日志的主页。按/然后键入“author”,然后按Enter,在此处搜索“author”。键入“n”几次,进入相关部分,显示:

git log --author="username"
如前所述

请注意,这将为您提供提交的作者,但在Git中,作者可以是与提交者不同的人(例如,在Linux内核中,如果您以普通用户身份提交修补程序,它可能由另一个管理用户提交。)有关更多详细信息,请参阅)


大多数时候,用户既是提交者又是作者。

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

git log --author="Jon"
将匹配“Jonathan Smith”所做的承诺

这也行。如果不需要任何空格,则引号是可选的

添加
--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
替换为
%cn
。有关这方面的更多详细信息,请参阅我的博文:

您甚至可以通过使用用户名的一部分将其缩写为:

git log --author=mr  #if you're looking for mrfoobar's commits
这将提供文本格式的提交。

在github上还有一个秘密方法

您可以在提交视图中通过附加参数“author=github\u handle”按作者筛选提交。例如,该链接显示提交到Dynjs项目的列表,以获取更多详细信息-(此处
%an
指作者)

使用以下命令:-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"
如果使用GitHub:

  • 去分行
  • 点击提交
它将以下面的格式显示列表

branch_x: < comment> 
author_name committed 2 days ago
branch\u x:
2天前提交的作者姓名
  • 查看单个作者的提交;单击author_name,您可以在该分支上看到该作者的所有提交

如果要筛选自己的提交:

git log --author="<$(git config user.email)>"
git日志--author=“”

通过在.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项承诺:

l10弗兰克

要显示任何人最近的20次提交,请执行以下操作:

L20

试试这个工具

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

显示作者的提交计数:

git shortlog -nse
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
查找特定用户名的所有提交:

git shortlog -nse
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
您可以使用=或“空格”。 例如,以下两个命令返回相同的

git log --author="Developer1"

git log --author "Developer1"

我的案例:我正在使用源代码树,我遵循以下步骤:

  • 按下
    CRL+3
  • 更改下拉列表作者
  • 键入名称“Vinod Kumar”

  • 尽管如此,还是有很多有用的答案。然而,只是为了增加另一种方式。你也可以使用

    git shortlog --author="<author name>" --format="%h %s"
    
    git shortlog--author=“”--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
    
    (5):
    4da3975f依赖项已升级
    已解决49172445个运行时依赖项
    bff3e127用户服务、奎托斯和番石榴依赖项升级
    414b6f1e dropwizard:-服务、rmq和db分片相关性升级
    a96af8d3已删除旧的从属关系
    
    在这里,当前分支下的
    总共完成了5次提交。然而,您也可以使用
    --all
    在git存储库中的任何地方(所有分支)强制执行搜索


    One catch:git在内部尝试将输入的
    与git数据库中作者的姓名和电子邮件进行匹配。它区分大小写

    有没有相反的方法?假设-我想查看除Jon之外的所有提交。@Ian as for git help log“Jon”是一个正则表达式,因此它应该是非常简单的日志--格式=%an | egrep-v“Jon*”| xargs-n 1 git log-1以任何方式使
    gitk
    忽略其他作者的父提交?(它们以白色圆圈显示)相反,
    git log--graph
    不显示父提交;它只显示给定作者的提交。我希望在
    gitk
    中看到相同的输出。(已经检查了首选项和编辑视图-找不到任何有用的内容。)注意这种情况sensitive@James我认为你的消极态度是没有道理的。我只是想教他如何从命令行中查找,以防他忘记。我想你把我误认为是一个只说RTFM的人,但我在回答中包括了答案。这不是否定。事实上,人们来到这里寻求建议,很多人想用RTFM的一些变体来回应。“这对社区来说是个坏兆头。”詹姆斯,我不得不同意我们的看法。他确实回答了这个问题,他提出了一个寻找答案的策略,这有助于找到其他与git相关问题的答案。我认为这并不像这件事那么简单。现在,我同意UNSUN的观点,我们应该教育人们如何为自己做事——这是个好主意。UNSUN稍微出错的地方是假设a)OP知道如何搜索手册页,更重要的是b)OP知道搜索“作者”。他们可能搜索过“提交人”或“姓名”之类的东西。@JohnHunt你是对的,
    git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
    
    git log --author="Developer1"
    
    git log --author "Developer1"
    
    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