git log
を使うとき、どのように私はそのユーザーからのコミットだけを見るようにユーザーによってフィルターをかけることができますか?
これはgit log
とgitk
- 歴史を見るための2つの最も一般的な方法の両方のために働きます。あなたは名前全体を使う必要はありません。
git log --author="Jon"
"Jonathan Smith"によるコミットと一致します
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
と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/
git log --author="that user"
Githubでは secret wayもあります。
パラメータ?author=github_handle
を追加することで、コミットビューで作者によるコミットをフィルタすることができます。たとえば、リンク https://github.com/dynjs/dynjs/commits/master?author=jingweno には、Dynjsプロジェクトへのコミットのリストが表示されます。
git help log
git logのマンページを提供します。 /キーを押して「author」と入力し、Enterキーを押して、「author」を検索します。該当するセクションに移動するには、「n」と数回入力します。
git log --author="username"
すでに示唆したように。
これはコミットの作者になりますが、Gitでは作者はコミッタとは別の人になることができます(例えば、Linuxカーネルで、一般ユーザとしてパッチを提出する場合、他の管理ユーザによってコミットされるかもしれません) Gitでの作者とコミッタの違いは?を参照してください。 詳細については)
ほとんどの場合、ユーザーとは、コミッターと作者の両方を指します。
詳細を引き出すには - (ここで%an
は作者を表します)
これを使って :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
cat | git log --author="authorName" > author_commits_details.txt
これはあなたのコミットをテキストフォーマットで与えます。
自分のコミットをフィルタリングしたい場合は、
git log --author="<$(git config user.email)>"
ユーザー名の一部を使用するだけで、これを少し短縮することもできます。
git log --author=mr #if you're looking for mrfoobar's commits
このツールをお試しください 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ユーザーのログの数をカラーで表示します。
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
もう一つの質問は(おそらく間違ってそうだろうか?)ロックされていたので、私はここにこれを置くつもりです:
作者にコミット数を表示する:
git shortlog -nse
特定のUSERNAMEに対するすべてのコミットを見つける:
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
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つのコミットが行われます。一方、--all
を使用して、gitリポジトリのすべての場所(すべてのブランチ)で検索を実施することもできます。
ワンキャッチ: gitは、入力<author name>
をgitデータベース内の作成者の名前と電子メールと照合しようとします。 case-sensitiveです。
=または "space"のどちらでも使用できます。たとえば、次の2つのコマンドは同じを返します
git log --author="Developer1"
git log --author "Developer1"