2009-08-20 13 views
17

Come è possibile mostrare le differenze di un file negli ultimi 5 commit nel file non memorizzato corrente da Git-show?Confronto tra le modifiche apportate al file corrente tramite Git

Ho apportato una modifica al mio file che interrompe il mio codice. Tuttavia, non so dove sia il cambiamento.

Vorrei confrontare gli attuali file non salvati con il commit recente (HEAD), con il commit precedente (^ HEAD) e almeno con 3 commit più profondi.

Tuttavia, non so come si possa fare in modo efficiente.

Nel tentativo di vedere i cambiamenti degli ultimi cinque commit di un file per il file corrente nel ramo dato, senza successo corse

git show next~5:handle_questions.php 

risposta

38

Ecco il mio cheat-sheet:

# uncommited file to HEAD 
git diff <path> 

# uncommited file to before last commit 
git diff HEAD^ -- <path> 

#last commit to before last commit 
git diff HEAD^ HEAD -- <path> 

#difference between HEAD and n-th grandparent 
git diff HEAD~n HEAD -- <path> 

#Another cool feature is whatchanged command 
git whatchanged -- <path> 
+0

come faresti con un file diverso da un percorso file diverso dall'ultimo commit? – Maslow

+0

Non credo sia possibile. Descrizione di git diff: "Mostra le modifiche tra l'albero di lavoro e l'indice o un albero, le modifiche tra l'indice e un albero, le modifiche tra due alberi o le modifiche tra due file sul disco." –

3

È possibile utilizzare git bisect per rintracciare il commit che ha introdotto un bug.

3

Per vedere la diff tra handle_questions.php nella directory di lavoro e nel repository 5 commette indietro, uso:

 
$ git diff HEAD~5 handle_questions.php 
2

Se si conosce il file in cui è stata apportata la modifica, è possibile utilizzare anche git blame <path> - questo vi darà una certa storia di ogni riga di codice nel seguente formato:

SHA (Author Timestamp Line Number) code 
+0

Questo è un grande comando! Grazie per averlo condiviso. –

Problemi correlati