1442

を使用する場合git log、ユーザーによるコミットのみを表示するようにユーザーでフィルタリングするにはどうすればよいですか?

4

16 に答える 16

1998

これは、履歴を表示する2つの最も一般的な方法であるgitkの両方git logで機能します。 名前全体を使用する必要はありません。

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または、以下を使用してパイプ処理することにより、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/

于 2010-11-24T01:41:29.467 に答える
62
git log --author="that user"
于 2010-11-23T19:35:17.753 に答える
54

githubには秘密の方法もあります...

paramを追加することで、コミットビューで作成者ごとにコミットをフィルタリングできます?author=github_handle。たとえば、リンクhttps://github.com/dynjs/dynjs/commits/master?author=jingwenoは、Dynjsプロジェクトへのコミットのリストを示しています。

于 2014-05-07T10:23:56.370 に答える
32
git help log

gitlogのマンページを提供します。/を押してから「author」と入力し、Enterキーを押して、そこで「author」を検索します。「n」を数回入力して、関連するセクションに移動します。これにより、次のことがわかります。

git log --author="username"

すでに示唆したように。

これによりコミットの作成者がわかりますが、Gitでは、作成者はコミッターとは異なる人である可能性があります(たとえば、Linuxカーネルでは、通常のユーザーとしてパッチを送信すると、別の管理ユーザーによってコミットされる可能性があります) 。)Gitの作成者とコミッターの違いを参照してください。詳細については)

ほとんどの場合、ユーザーと呼ばれるのはコミッターと作成者の両方です。

于 2010-11-23T19:37:54.603 に答える
26

詳細を引き出すには-(ここで%anは作者を指します)

これを使って :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"
于 2015-08-11T19:09:05.357 に答える
20

独自のコミットをフィルタリングする場合:

git log --author="<$(git config user.email)>"
于 2016-11-22T13:57:54.933 に答える
16
cat | git log --author="authorName" > author_commits_details.txt

これにより、コミットがテキスト形式で提供されます。

于 2013-09-23T06:32:52.060 に答える
14

他の質問は(おそらく間違ってそうですか?)ロックされていたので、これをここに置きます:

作成者にコミット数を表示します。

git shortlog -nse

特定のユーザー名のすべてのコミットを検索します。

git log --author=USERNAME --oneline --color=never | awk '{print $1}' | xargs git show
于 2017-09-17T15:11:18.190 に答える
12

ユーザー名の一部を使用するだけで、これを少し短縮することもできます。

git log --author=mr  #if you're looking for mrfoobar's commits
于 2013-03-24T18:54:37.647 に答える
12

このツールを試して ください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
于 2017-06-19T12:19:15.853 に答える
5

この小さなスニペットを.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

フランクによる過去10回のコミットを表示するには:

l 10 frank

誰かによる最後の20のコミットを表示するには:

l 20

于 2017-06-09T20:54:27.290 に答える
4

GitHubを使用している場合:

  • ブランチに行く
  • コミットをクリックします

以下の形式でリストが表示されます

branch_x: < comment> 
author_name committed 2 days ago
  • 個々の作者のコミットを確認する; author_nameをクリックする と、そのブランチでその作成者のすべてのコミットを確認できます。
于 2016-08-24T12:43:26.057 に答える
3

=または「スペース」のいずれかを使用できます。たとえば、次の2つのコマンドは同じものを返します

git log --author="Developer1"

git log --author "Developer1"
于 2018-07-11T18:51:17.977 に答える
3

しかし、多くの有用な答えがあります。一方、それに別の方法を追加するだけです。使用することもできます

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で検索を強制するために使用することもできます。

1つの落とし穴:<author name> gitは、入力をgitデータベース内の作成者の名前と電子メールと内部的に照合しようとします。大文字と小文字が区別されます。

于 2019-08-19T06:16:52.627 に答える
1

私の場合:ソースツリーを使用しています。次の手順に従いました。

  1. 押されたCRL+3
  2. ドロップダウンの作成者を変更しました
  3. 「VinodKumar」という名前を入力しました

ここに画像の説明を入力してください

于 2019-08-15T23:48:36.860 に答える
0

考えられる代替手段は、mergestatと呼ばれるツールを使用することです。このツールを使用すると、リポジトリ内のコミット履歴に対してSQLクエリを実行できます(特に)。

mergestat "SELECT * FROM commits WHERE author_name LIKE '%Jon%'"

もう少し冗長ですが、一般的な方法で探しているものを具体的に見つける際の柔軟性を提供できます。

たとえば、特定の作成者からのマージコミットを除外し、過去1年間のコミットのみを表示します。

mergestat "SELECT * FROM commits WHERE author_name LIKE '%Jon%' WHERE author_when > DATE('now', '-1 year') AND parents < 2"

完全な開示:私はプロジェクトのメンテナーです:)

于 2021-12-14T17:58:02.503 に答える