When using git log
, how can I filter by user so that I see only commits from that user?
问题:
回答1:
This works for both git log
and gitk
- the 2 most common ways of viewing history. You don't need to use the whole name.
git log --author="Jon"
will match a commit made by "Jonathan Smith"
git log --author=Jon
and
git log --author=Smith
would also work. The quotes are optional if you don't need any spaces.
Add --all
if you intend to search all branches and not just the current commit's ancestors in your repo.
You can also easily match on multiple authors as regex is the underlying mechanism for this filter. So to list commits by Jonathan or Adam, you can do this:
git log --author="\(Adam\)\|\(Jon\)"
In order to exclude commits by a particular author or set of authors using regular expressions as noted in this question, you can use a negative lookahead in combination with the --perl-regexp
switch:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Alternatively, you can exclude commits authored by Adam by using bash
and piping:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
If you want to exclude commits commited (but not necessarily authored) by Adam, replace %an
with %cn
. More details about this are in my blog post here: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
回答2:
git log --author="that user"
回答3:
On github there is also a secret way...
You can filter commits by author in the commit view by appending param ?author=github_handle
. For example, the link https://github.com/dynjs/dynjs/commits/master?author=jingweno shows a list of commits to the Dynjs project
回答4:
git help log
gives you the manpage of git log. Search for "author" there by pressing / and then typing "author", followed by Enter. Type "n" a few times to get to the relevant section, which reveals:
git log --author="username"
as already suggested.
Note that this will give you the author of the commits, but in Git, the author can be someone different from the committer (for example in Linux kernel, if you submit a patch as an ordinary user, it might be committed by another administrative user.) See Difference between author and committer in Git? for more details)
Most of the time, what one refers to as the user is both the committer and the author though.
回答5:
To pull more details - (Here %an
refers to author)
Use this :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
回答6:
cat | git log --author="authorName" > author_commits_details.txt
This gives your commits in text format.
回答7:
You can even abbreviate this a bit by simply using part of the user name:
git log --author=mr #if you're looking for mrfoobar's commits
回答8:
If you want to filter your own commits:
git log --author="<$(git config user.email)>"
回答9:
try this tool https://github.com/kamranahmedse/git-standup
Usage
```bash
$ git standup [-a <author name>]
[-w <weekstart-weekend>]
[-m <max-dir-depth>]
[-f]
[-L]
[-d <days-ago>]
[-D <date-format>]
[-g]
[-h]
```
Below is the description for each of the flags
- `-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
回答10:
Since the other question was (possibly wrongfully so?) locked, I will just put this here:
show authors with their commit counts:
git shortlog -nse
find all commits for specific USERNAME:
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
回答11:
If using GitHub:
- go to branch
- click on commits
it will show list in below format
branch_x: < comment>
author_name committed 2 days ago
- to see individual author's commit ; click on author_name and there you can see all the commit's of that author on that branch
回答12:
Show n number of logs for x user in colour by adding this little snippet in your .bashrc file.
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
To show the last 10 commits by Frank:
l 10 frank
To show the last 20 commits by anyone:
l 20
回答13:
You can use either = or "space". For instance following two commands return the same
git log --author="Developer1"
git log --author "Developer1"