2010-07-30 7 views
5

Ho un file di testo (.yml) che inserisco alcuni testi nel mio sistema. Ma ora abbiamo bisogno di sapere quali nuove righe contemporaneamente. Ho pensato di usare git per risolvere il nostro problema, ma non posso trovare un comando chiarito per farlo.Uso di git diff nello stesso file tra il primo e l'ultimo commit

È possibile?

+0

possibile duplicato di [Git:? Come diff lo stesso file tra due commit differenti sullo stesso ramo] (http://stackoverflow.com/questions/3338126/git -come-diff-lo-stesso-file-tra-due-diversi-commits-sullo-stesso-ramo) –

risposta

11

È possibile ottenere un elenco dei commit withs qualcosa in questo modo:

git log --abbrev-commit --pretty=oneline

che dovrebbe qualcosa di simile:

commitD Description 
commitC Description 
commitB Description 
commitA Description 

Scegli i tuoi due commit e sostituirli qui di seguito:

git diff <commitA>..<commitB> -- /path/to/file

+0

risolto il mio problema, thnx! –

3

Puoi farlo con una sola riga di comando:

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file> 

Non funziona usare --reverse con un conteggio di 1 (-1/--max-count 1) ... come si inverte la lista risultante dopo averlo troncato. Quindi o usi --reverso insieme al comando della testa o usi la coda -1.

Ho dovuto aggiungere il -w per il mio utilizzo a causa di interruttori in terminazioni di riga e utilizzo di tabulazioni e spazi.

Questo potrebbe non funzionare come previsto se il file non è stato aggiunto al primo commit! Si può modificare la riga sopra per:

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file>