1人のユーザーが変更したすべてのファイルをgitに教えてもらえますか?


147

すべてのコミットにわたって、1人のユーザーが変更したすべてのファイルのリストをgitに提供してほしい。

私の特定のユースケースは、Ruby on Railsプロジェクトの国際化に関わってきたというもので、どのファイルが既に実行され、どのファイルがまだ実行する必要があるかを知りたいです。問題のユーザーはi18nでのみ作業を行い、残りのコードベースでは作業を行っていません。したがって、情報はすべてgitにあるはずですが、それを取得する方法がわかりません。

回答:


127

これが唯一の方法ではありませんが、機能します。

git log --pretty="%H" --author="authorname" |
    while read commit_hash
    do
        git show --oneline --name-only $commit_hash | tail -n+2
    done | sort | uniq

または、1行として:

git log --pretty="%H" --author="authorname" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq

184

これにより、ファイルの簡単なリストが表示されます。

git log --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u

必要に応じて、-authorを--committerに切り替えます。


1
--name-only出力はファイル名にすぎないようです。その事実を踏まえて、オプション--stat--pretty=format:""達成することは何ですか?省略してもらえますか?
ジョナ

1
@Jonah --pretty = format: ""が必要です。答えを編集しました。
Ian Kelling 2016

2
それは、ファイルの数を取得するには「トイレ-l」を介して結果をパイプすると、1でオフであることを意味し、出力の開始時に空白のリンクを生成します:1つの小さなグリッチが、素晴らしい作品
ヨアヒム

削除されたファイルを除外するにはどうすればよいですか?
Tim Boland

8

お試しくださいgit log --stat --committer=<user>--committer=オプションにユーザーの名前を付けるだけです(または必要--author=に応じて使用します)。

これにより、コミットごとにすべてのファイルが吐き出されるため、重複が発生する可能性があります。


0
git log --pretty= --author=@abcd.com --name-only | sort -u | wc -l

変更されたすべてのファイルを会社ごとにgitリポジトリに表示します。

git log --pretty= --author=user@abcd.com --name-only | sort -u | wc -l

変更されたすべてのファイルをgitリポジトリの作成者名「user」別に表示します。

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