2011-11-04 13 views
28

Dato un periodo di tempo (ad esempio un giorno, una settimana, un mese), è possibile elencare tutti i file che sono stati modificati o aggiunto in questo momento?git: elenca tutti i file aggiunti/modificati in un giorno (o settimana/mese ...)

+0

Grazie, tutti per le tante soluzioni diverse! Mi piacerebbe accettarli tutti poiché tutti risolvono la mia domanda. Accetto la soluzione di @ inger perché mi piace avere l'indicatore modificato/aggiunto ... – thias

+0

In realtà lo stato -name funziona anche con 'git log'. Inoltre, per favore, non i commenti della mia risposta, che indicano una limitazione ... chiarirò presto. – inger

risposta

29

userei diff di cedere direttamente l'elenco di file, ad esempio:

git diff --name-only "@{3 days ago}" "@{2 days ago}" 

changelog.txt 
newfile.txt 

Se sei curioso su quale file è stato modificato o aggiunto, usa invece --name-status:

git diff --name-status "@{3 days ago}" "@{2 days ago}" 

M  changelog.txt 
A  newfile.txt 
+2

Si noti che la notazione @ {...} può essere inaffidabile, potrebbe avere una granularità molto più grossolana rispetto ai commit effettivi, poiché utilizza voci di rev-reg per mappare le date in commit e le voci vengono aggiunte solo al rev-log per _your_ azioni (e non, per esempio, per ogni commit in un pull). – snogglethorpe

+0

Vuoi dire reflog? Comunque, grazie per il promemoria - avrei usato --since e --until ma ciò non sembra dare i risultati attesi. Conosci un'alternativa più affidabile? – inger

+0

Sì, reflog :) (argh, perché non puoi modificare i commenti oltre 5 minuti ...) – snogglethorpe

4

Prova:

git log --since="2 days ago" --until="1 days ago"

Se si omette --until otterrete registri per due giorni. Puoi anche spesare settimane, mesi, ecc. Puoi anche usare git diff con i parametri --since e --until. Lavorare un po 'sulla formattazione dell'output e il gioco è fatto.

20

Forse questo:

git log --since="1 day ago" --name-only --pretty=format: | sort | uniq 

Includere --until se si desidera per un giorno, una settimana ecc

+0

È possibile risparmiare un comando usando -u: 'git log --since =" 1 giorno fa "--name-only --pretty = formato: | sort -u' .. Anche questo pensiero è ancora più complicato di un semplice 'git diff' .. quale OTOH, potrebbe avere un problema con git corrente (vedi i commenti della mia risposta). – inger

+0

Non si è sicuri dell'utilizzo di uniq in questa soluzione. Potrebbero esserci commit diversi con lo stesso numero di file modificati, inserimenti e cancellazioni, che svaniranno se si canalizza il risultato attraverso uniq. – i4h

9

Git whatchanged dovrebbe darti quello che vuoi, elencando quali file sono stati modificati.

Ecco un esempio utilizzando Git fonte:

$ git --version 
git version 1.7.8.rc0.35.gee6df 
$ git whatchanged --since '10/27/2011' --until '10/30/2011' --oneline 
55e7c0a (squash) test for previous 
:100755 100755 dbf623b... 53905a2... M t/t8006-blame-textconv.sh 
2564aa4 blame.c: Properly initialize strbuf after calling, textconv_object() 
:100644 100644 173f286... e39d986... M builtin/blame.c 
e8e1c29 Update draft release notes to 1.7.8 
:100644 100644 3045245... ddb8d37... M Documentation/RelNotes/1.7.8.txt 
8debf69 clone: Quote user supplied path in a single quote pair 
:100644 100644 488f48e... efe8b6c... M builtin/clone.c 
16

Io lo uso per ottenere una lista pulita:

git whatchanged --since '04/14/2013' --until '05/22/2014' --oneline --name-only --pretty=format: | sort | uniq >> changedlist.txt 
+0

Come eseguire un comando simile per vedere quali file non sono stati modificati dal 14/04/15 al 05/22/2014 o negli ultimi 7 giorni/settimana? Grazie. –

+0

Ho postato una risposta qui: http://stackoverflow.com/questions/31443727/git-how-to-list-all-files-that-have-not-been-changed-since-a-certain-date che si occupa con l'opposto di ciò che questo post ha richiesto ma è utile. –

3

Qui è uno di più senza righe vuote:

git log --after="2015-11-05T16:36:00-02:00" --before="2015-11-15T16:36:00-02:00" --pretty=format:"" --name-only | sed '/^\s*$/d' | sort | uniq -u 
Problemi correlati