を使用する場合git log
、ユーザーによるコミットのみを表示するようにユーザーでフィルタリングするにはどうすればよいですか?
16 に答える
これは、履歴を表示する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/
git log --author="that user"
githubには秘密の方法もあります...
paramを追加することで、コミットビューで作成者ごとにコミットをフィルタリングできます?author=github_handle
。たとえば、リンクhttps://github.com/dynjs/dynjs/commits/master?author=jingwenoは、Dynjsプロジェクトへのコミットのリストを示しています。
git help log
gitlogのマンページを提供します。/を押してから「author」と入力し、Enterキーを押して、そこで「author」を検索します。「n」を数回入力して、関連するセクションに移動します。これにより、次のことがわかります。
git log --author="username"
すでに示唆したように。
これによりコミットの作成者がわかりますが、Gitでは、作成者はコミッターとは異なる人である可能性があります(たとえば、Linuxカーネルでは、通常のユーザーとしてパッチを送信すると、別の管理ユーザーによってコミットされる可能性があります) 。)Gitの作成者とコミッターの違いを参照してください。詳細については)
ほとんどの場合、ユーザーと呼ばれるのはコミッターと作成者の両方です。
詳細を引き出すには-(ここで%an
は作者を指します)
これを使って :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
独自のコミットをフィルタリングする場合:
git log --author="<$(git config user.email)>"
cat | git log --author="authorName" > author_commits_details.txt
これにより、コミットがテキスト形式で提供されます。
他の質問は(おそらく間違ってそうですか?)ロックされていたので、これをここに置きます:
作成者にコミット数を表示します。
git shortlog -nse
特定のユーザー名のすべてのコミットを検索します。
git log --author=USERNAME --oneline --color=never | awk '{print $1}' | xargs git show
ユーザー名の一部を使用するだけで、これを少し短縮することもできます。
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ユーザーの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
GitHubを使用している場合:
- ブランチに行く
- コミットをクリックします
以下の形式でリストが表示されます
branch_x: < comment>
author_name committed 2 days ago
- 個々の作者のコミットを確認する; author_nameをクリックする と、そのブランチでその作成者のすべてのコミットを確認できます。
=または「スペース」のいずれかを使用できます。たとえば、次の2つのコマンドは同じものを返します
git log --author="Developer1"
git log --author "Developer1"
しかし、多くの有用な答えがあります。一方、それに別の方法を追加するだけです。使用することもできます
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データベース内の作成者の名前と電子メールと内部的に照合しようとします。大文字と小文字が区別されます。
考えられる代替手段は、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"
完全な開示:私はプロジェクトのメンテナーです:)