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

当使用git log ,我怎么能过滤用户,以便我只看到该用户提交?

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

 git log --author="Jon" 

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

 git log --author=Jon 

 git log --author=Smith 

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

添加 – 如果你打算search所有分支机构,而不只是当前提交的祖先在你的回购。

你也可以很容易地匹配多个作者,正则expression式是这个filter的基本机制。 所以要列出乔纳森或亚当的提交,你可以这样做:

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

为了排除特定作者或一组作者使用正则expression式提交的问题 ,可以使用负向前视和--perl-regexp开关:

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

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

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

如果您想排除由Adam提交的提交(但不一定是创作者),请将%anreplace%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日志的manpage。 search“作者”按/然后input“作者”,然后按Enter键。 input“n”几次即可到达相关部分,其中显示:

 git log --author="username" 

如已经暗示的那样

请注意,这会使您成为提交的作者,但在Git中,作者可能与提交者不同(例如,在Linux内核中,如果您以普通用户身份提交补丁程序,则可能由另一个pipe理用户)看看作者和提交者在Git中的区别? 更多细节)

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

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

这给你的文字格式提交。

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

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

拉更多的细节 – (这里%an是指作者)

用这个 :-

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

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

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

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

如果使用GitHub:

  • 去分支
  • 点击提交

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

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

我在.bashrc文件中创build了这个小片段。

 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

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

显示作者与他们的提交计数:

 git shortlog -nse 

find特定USERNAME的所有提交:

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