Answers:
这适用于git log
和gitk
-两种最常见的查看历史记录方式。
您不需要使用全名:
git log --author="Jon"
将匹配“乔纳森·史密斯”的承诺
git log --author=Jon
和
git log --author=Smith
也可以。如果不需要空格,则引号是可选的。
添加--all
如果你打算搜索所有分支,而不仅仅是当前提交的祖先在你的回购协议。
您也可以轻松匹配多个作者,因为正则表达式是此过滤器的基础机制。因此,要列出Jonathan或Adam的提交,可以执行以下操作:
git log --author="\(Adam\)\|\(Jon\)"
为了排除特定作者或一组作者使用正则表达式的提交(如本问题所述),您可以结合使用否定超前查询和--perl-regexp
开关:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
另外,您可以使用bash
和管道排除由亚当创作的提交:
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/
gitk
排除其他作者的父提交?(它们用白色圆圈显示。)相反,git log --graph
不显示父提交。它仅显示给定作者的提交。我希望在中看到相同的输出gitk
。(已经检查了“首选项”和“编辑视图”-找不到有用的东西。)
在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中作者和提交者之间的区别?更多细节)
在大多数情况下,所谓的用户既是提交者又是作者。
如果要过滤自己的提交:
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 (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
通过在.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
如果使用GitHub:
它将以以下格式显示列表
branch_x: < comment>
author_name committed 2 days ago
虽然,有许多有用的答案。而只是添加另一种方法。您也可以使用
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数据库中作者的姓名和电子邮件进行匹配。它是区分大小写的。
github
?