我如何查看一个用户提交的git日志?
当使用git log
,我怎么能过滤用户,以便我只看到该用户提交?
这适用于git log
和gitk
– 查看历史的两种最常见的方式。 你不需要使用全名。
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提交的提交(但不一定是创作者),请将%an
replace%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