web-dev-qa-db-ja.com

過去2日間に変更されたGitショーファイル

過去2日間に変更されたすべてのファイルのリストを取得するにはどうすればよいですか?私は知っています

git log --name-status --since="2 days ago" 

ただし、ID、日付、コミットメッセージは表示されます。必要なのは、変更されたファイル名のリストです。

Gitでそれは可能ですか?

58
dole doug
git log --pretty=format: --name-only --since="2 days ago"

複数のコミットでいくつかのファイルが重複する場合は、パイプを使用してフィルタリングできます

git log --pretty=format: --name-only --since="2 days ago" | sort | uniq
85
Peng Qi
_git diff --stat @{2.days.ago} # Deprecated!, see below
_

短くて効果的

編集

TLDR:git diff $(git log -1 --before=@{2.days.ago} --format=%H) --statを使用

長い説明:元のソリューションは良好でしたが、少し不具合があり、reflogに限定されていました。つまり、reflogはプッシュされないため、ローカル履歴のみを表示します- リモート。これが、最近複製されたリポジトリで_warning: Log for 'master' only goes back to..._を取得する理由です。

私はこれを設定しましたalias私のマシンで:

_alias glasthour='git diff $(git log -1 --before=@{last.hour} --format=%H) --stat' 
alias glastblock='git diff $(git log -1 --before=@{4.hours.ago} --format=%H) --stat' 
alias glastday='git diff $(git log -1 --before=@{last.day} --format=%H) --stat' 
alias glastweek='git diff $(git log -1 --before=@{last.week} --format=%H) --shortstat | uniq' 
alias glastmonth='git diff $(git log -1 --before=@{last.month} --format=%H) --shortstat | uniq'                                                                                                                
_

クレジット:@ adam-dymitrukによる下記の回答

50
AA.

2日前に最も近いバージョンのdiffを次の方法で実行できます。

git diff $(git log -1 --before="2 days ago" --format=%H).. --stat

--statは、変更の要約を提供します。追加 --name-onlyメタ情報を除外し、ファイル名のみをリストします。

お役に立てれば。

3
Adam Dymitruk

Git logに--rawオプションを使用します。

$ git log --raw --since=2.days

--raw形式で表示されるフラグの説明については、gitログのヘルプページの--diff-filterの部分を参照してください。各コミットでファイルに何が起こるかを説明します:

   --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
       Select only files that are Added (A), Copied (C), Deleted (D),
       Modified (M), Renamed (R), have their type (i.e. regular file,
       symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown
       (X), or have had their pairing Broken (B). Any combination of the
       filter characters (including none) can be used. When *
       (All-or-none) is added to the combination, all paths are selected
       if there is any file that matches other criteria in the comparison;
       if there is no file that matches other criteria, nothing is
       selected. 
3
holygeek
git log --pretty="format:" --since="2 days ago" --name-only
2
Stacey Richards