web-dev-qa-db-fra.com

Git afficher les fichiers qui ont été modifiés au cours des 2 derniers jours

Comment puis-je avoir une liste avec tous les fichiers qui ont été modifiés au cours des 2 derniers jours? Je connais

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

mais cela me montrera les identifiants, les dates et les messages de validation. Tout ce dont j'ai besoin est la liste des noms de fichiers qui ont été modifiés.

Est-ce possible avec git?

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

si certains fichiers se dupliquent en plusieurs validations, vous pouvez utiliser un tuyau pour le filtrer

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

Court et efficace

Éditer

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

Explication longue: La solution d'origine était bonne, mais elle avait un petit problème, elle était limitée à reflog, en d'autres termes, ne montre que l'historique local, car reflog n'est jamais poussé vers - à distance. C'est la raison pour laquelle vous obtenez le warning: Log for 'master' only goes back to... Dans les dépôts récemment clonés.

J'ai configuré cela alias sur ma machine:

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'                                                                                                                

crédits: réponse ci-dessous par @ adam-dymitruk

50
AA.

Vous pouvez faire un diff d'une version la plus proche d'il y a 2 jours avec:

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

--stat vous donne un résumé des modifications. Ajouter --name-only pour exclure toute méta-information et n'avoir qu'une liste de noms de fichiers.

J'espère que cela t'aides.

3
Adam Dymitruk

Utilisez l'option --raw pour git log:

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

Voir la partie --diff-filter de la page d'aide du journal git pour l'explication des indicateurs affichés au format --raw. Ils expliquent ce qui arrive aux fichiers dans chaque commit:

   --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