2011-11-08 14 views
279

Conosco il git, posso usare il comando git diff per controllare le modifiche, ma (quello che ho capito è che) è basato su directory. Ciò significa che fornisce tutte le modifiche di tutti i file nella directory corrente.Vedere le modifiche ad un file specifico usando git

Come posso controllare solo le modifiche su un file specifico? Dire, ho cambiato file_1.rb, file_2.rb, ..., file_N.rb, ma sono interessato solo alle modifiche sul file file_2.rb. Come controllare allora?

Vorrei verificare le modifiche prima di eseguirlo.

+0

possibile duplicato di [Come visualizzare la cronologia dei file in Git?] (Http://stackoverflow.com/questions/1786027/how-to-view-file-history-in-git) – CharlesB

+3

La mia domanda principale è come controllare la differenza per un file specifico prima di commettere tutte le modifiche. Il log di Git è per le modifiche confermate, credo. – Mellon

+0

Nella mia esperienza è meglio usare uno strumento visivo come [GitKraken] (https://www.gitkraken.com) –

risposta

389

usare un comando come:

git diff file_2.rb 

Vedere la git diff documentation per informazioni complete sul tipo di cose che si possono ottenere le differenze per.

Normalmente, git diff di per sé mostra tutte le modifiche dell'intero repository (non solo la directory corrente).

+50

Se vuoi vedere le modifiche di un file che hai già "git add" edito, è "git" diff --cached " –

+3

Se si desidera verificare un file rispetto a un commit precedente: $ git diff [commit hash] file_2.rb –

+1

Come uscire dalla visualizzazione diff? – Garry

55

È possibile utilizzare gitk [filename] per vedere i cambiamenti log

+1

Questo mostrerebbe la cronologia dei commit sul file, che a volte potrebbe essere quello che ti serve. – r1k0

+0

Questo è ciò di cui avevo bisogno. Grazie – nanosoft

10

È possibile eseguire

git status -s 

questo mostrerà modificato nome file e quindi copiando il percorso del file interessati potete vedere i cambiamenti usando git diff

git diff <filepath + filename> 
39

Un altro metodo (di cui al this SO answer) non mancherà di tenere la storia nel terminale e vi darò un track record molto profonda del file stesso:

git log --follow -p -- file

Questo ti mostrerà tutta la storia del file (compresa la storia al di là di rinomina e con diff per ogni cambio).

In altre parole, se il file denominato bar era chiamato foo, quindi git log -p bar (senza l'opzione --follow) mostrerà la cronologia del file solo fino al punto in cui è stata rinominata - ha vinto mostrare la cronologia del file quando era noto come foo. Usando git log --follow -p bar mostrerà l'intera cronologia del file, comprese eventuali modifiche al file quando era noto come foo.

+1

questa dovrebbe essere la risposta corretta. – bx2

+0

Funziona bene con --stat per avere una panoramica delle linee aggiunte/cancellate. –

8

È possibile utilizzare il comando di sotto per vedere chi ha cambiato cosa in un file.

git blame <filename>

+0

Questa è la migliore risposta in quanto ti dice chi ha apportato le modifiche e quando è stato incluso il cambiamento. Per filtrare per un cambiamento specifico, basta fare 'git blame | grep 'dove' 'è un valore breve. Per esempio, per scoprire chi ha cambiato 'pippo' in' bar' in 'dist/index.php', si usa' git blame dist/index.php | barra grep' –

0

si può anche provare

git show <filename> 

Per commit, git spettacolo mostrerà il messaggio di log e diff testuale (tra il file e la versione Commited del file).

È possibile controllare git show Documentation per ulteriori informazioni.

Problemi correlati