2015-08-05 23 views
5

git log --follow <myfile> mostra lo git log per un file.Perché non posso usare git log --follow con --full-diff?

Mi piacerebbe vedere questo registro con tutte le modifiche (diff) in questo file. Provo:

git log --full-diff --follow <myfile> 

Ma questo non funziona con:

fatal: --follow requires exactly one pathspec 

Perché? Come posso ottenere il diff che volevo?

O forse, è un bug in git?

risposta

3

È possibile ottenere in questo modo:

git diff <file_path_relative_to_project_root> 

Modificato:

Spiegazione: voluto un po 'per capire questo. Ogni volta che viene utilizzato lo git log -p <file> mostra il commit dove mai il file è stato toccato e diff per lo stesso file da solo. Ciò significa che se si desidera seguire la cronologia completa di un file, è possibile aggiungere l'opzione --follow e visualizzare la cronologia completa.

Ma quando si entra in questo comando: git log --full-diff -p file, vi mostra tutti i commit dove mai stato toccato questo file più ora mostra non solo diff per il file specificato ma mostra anche le diff del per tutti i file che sono stati toccati in il commit. Ciò significa che ti dà risultati per più file.

Se si tenta questo comando: git log help Vedrai che --follow opzione può essere utilizzata solo solo per un singolo file in modo si può avere un comando come questo: git log --follow -p file dal momento che mostra i risultati per solo file singolo.

Ma non può essere utilizzato con il seguente comando: git log --full-diff --follow -p file poiché mostra risultati per più file e questa query genererebbe un errore.

+0

No. Git diff può mostrarmi solo le modifiche tra 2 stati del file (per impostazione predefinita: il file da repo HEAD e il file da disco), ma non la cronologia completa. – mik01aj

+1

Troverai la tua risposta [qui] (http://stackoverflow.com/a/5493663/3863146), ad esempio ** git log --follow -p - file ** – sahil

+0

Grazie, funziona! Quindi hai risposto alla mia seconda domanda :) Cosa ne pensi della spiegazione del "perché"? – mik01aj

3

TL; DR versione della risposta di Sahil:

In git log, --full-diff non funziona con --follow, perché "full" means "show all changed files" e --follow funziona solo con un file.

Soluzione: utilizzare git log --follow -p <file>.