1人のユーザーのコミットのgitログを表示するにはどうすればよいですか?


回答:


1715

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

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

または、Adamが作成したコミットを使用bashしてパイプすることで、コミットを除外できます。

git log --format='%H %an' | 
  grep -v Adam | 
  cut -d ' ' -f1 | 
  xargs -n1 git log -1

あなたはアダムによってコミットコミット(必ずしも執筆していない)を除外したい場合は、交換してください%an%cn。これに関する詳細は、こちらのブログ投稿にあります。http//dymitruk.com/blog/2012/07/18/filtering-by-author-name/


9
反対を行う方法はありますか?説明-ジョン以外のすべてのコミットを見たい。
Ian Robinson、

4
@Ianはgit help logについては "Jon"は正規表現なので、とても簡単です
sumek

2
git log --format =%an | egrep -v 'Jon *' | xargs -n 1 git log -1
Adam Dymitruk

4
作るためにどのような方法gitk他の著者から親のコミットを除外?(それらは白い円で表示されます。)対照的にgit log --graph、親のコミットは表示されません。与えられた作者のコミットのみを表示します。で同じ出力を表示したいと思いgitkます。([設定]と[編集ビュー]は既に
オンになって

2
これは大文字と小文字が区別されることに注意してください
Chiel ten Brinke '10


44

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

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


1
ブランチ全体を見る方法はありますか?コミット/すべてのようなもの?
2015年

どうやってこれを見つけましたか?他にどのようなフラグがサポートされていますか?
Woodrow Barlow

1
pro.meanの回答:インターフェース経由でこれを行う方法:stackoverflow.com/a/39123694/1225617
Adam Millerchip

質問はソフトウェアに関するものであり、特定のサービスに関するものではなかったため、私はこの回答を好みません。
Valerio Bozz

問題は、テクノロジーに関係なく、gitログを表示する方法だけでした。したがって、この答えは法案にうまく適合します。
スロット

31
git help log

git logのマンページを提供します。/を押して「author」を検索し、「author」と入力してEnterキーを押します。「n」を数回入力して、関連するセクションに移動します。

git log --author="username"

すでに示唆したように。

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

ほとんどの場合、ユーザーとして言及するのは、コミッターでも作者でもあります。


21
@ジェームスここでのあなたの否定性は正当化できないと思います。私は単に、彼が忘れた場合に備えて、コマンドラインから検索する方法を彼に教えようとしていました。私はRTFMとだけ言っている人と間違えていると思いますが、私は私の回答に答えを含めました。
ustun 2013

11
それは否定的ではありません。それは人々がアドバイスを求めてここに来るという事実であり、多くの人々はRTFMのいくつかのバリアントで応答したいと思っています。コミュニティにとって悪い兆候。
James

11
@ジェームス私はここでustunに同意する必要があります。彼質問に答えました、そして彼は他のgit関連の質問への答えを見つけるのに役立つ答えを見つけるための戦略を提供しました。
ピーター

4
これほど白黒だとは思いません。私は、私たちが人々に自分たちで物事を行う方法を教育するべきであるという不満に同意します-それは良い考えです。unstunがわずかに間違っていたのは、仮定を立てることです。a)OPがmanページを検索する方法を知っていること、さらに重要なのはb)OPが「著者」を検索することを知っていることです。彼らは「コミッター」や「名前」などを検索した可能性があります。
John Hunt

6
@JohnHunt正解です。検索の意味とその方法を説明することは、私には一度もありませんでした。想定したようなもの。テキストを少し修正。
ustun 2017年

23

詳細を取得するには-(ここで%anは著者を参照)

これを使って :-

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

そして、もしあなた%ae%an(名前を与えた)の代わりに彼らの電子メールアドレス使用フォーマットが欲しいなら
MarkHu

--author実際には、コミッター名ではなく、著者名で検索します。私は"username"著者に変更します
Algorithmatic


14

自分のコミットをフィルタリングしたい場合:

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

1
また、引用符と括弧なしでも機能します(少なくともgit bashとubuntu bashでは)。
Lavamantis

12

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

git log --author=mr  #if you're looking for mrfoobar's commits

11

このツールを試して ください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

6

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

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

git shortlog -nse

特定のユーザー名のすべてのコミットを見つける:

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

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


4

GitHubを使用している場合:

  • 支店に行く
  • コミットをクリック

以下のフォーマットでリストを表示します

branch_x: < comment> 
author_name committed 2 days ago
  • 個々の作者のコミットを見るため; author_name をクリックすると、そのブランチ上のその作成者のすべてのコミットが表示されます。

2
これはクリック数が多く、ホストされているgitリポジトリを想定しています。上記の多くが行ったようにCLIに応答しません。
lacostenycoder

1
@lacostenycoderですが、特にGitHubには多くのgitプロジェクトが存在するため、この情報は役立ちます。
Adam Millerchip 2016

2

=または "スペース"を使用できます。たとえば、次の2つのコマンドは同じ結果を返します

git log --author="Developer1"

git log --author "Developer1"

1

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

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

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


1

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

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

ここでは、合計5つのコミットが<Author Name>現在のブランチの下で行われます。一方、gitリポジトリ内のすべての--all場所(すべてのブランチ)で検索を強制することもできます。

1つのキャッチ: gitは内部で入力<author name>をgitデータベース内の作者の名前と電子メールと照合しようとします。それは、大文字と小文字を区別

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.