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


当前回答

要获取更多详细信息-(此处%an指作者)

使用此项:-

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

其他回答

通过在.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弗兰克

要显示任何人的最后20次提交:

l 20

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

显示作者及其提交次数:

git shortlog -nse

查找特定USERNAME的所有提交:

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

这对gitlog和gitk都有效——这是查看历史的两种最常见的方式。您不需要使用整个名称:

git log --author="Jon"

将符合“乔纳森·史密斯”的承诺

git log --author=Jon

and

git log --author=Smith

也会起作用。如果不需要空格,引号是可选的。

如果您打算搜索所有分支,而不仅仅是当前提交的祖先,那么添加--all。

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

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

为了排除特定作者或一组作者使用正则表达式进行的提交(如本问题中所述),您可以结合--perl regexp开关使用负前瞻:

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

或者,可以使用bash和piping排除Adam编写的提交:

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/

要获取更多详细信息-(此处%an指作者)

使用此项:-

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

如果要过滤自己的提交:

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