Risposte:
Tu puoi fare:
git diff master~20:pom.xml pom.xml
... per confrontare la tua corrente pom.xmlcon quella di master20 revisioni fa tramite il primo genitore. È possibile sostituire master~20, ovviamente, con il nome dell'oggetto (SHA1sum) di un commit o uno dei molti altri modi per specificare una revisione .
Si noti che questo in realtà sta confrontando la vecchia pom.xmlcon la versione dell'albero di lavoro, non con la versione impegnata master. Se lo desideri, puoi invece procedere come segue:
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
Per esempio:
git diff b0d14a4 foobar.txt
git diff <revision> root/path/file.
Se vuoi vedere la differenza tra l'ultimo commit di un singolo file puoi fare:
git log -p -1 filename
Questo ti darà il diff del file in git, non sta confrontando il tuo file locale.
-1passo dopo passo fino ad ottenere le modifiche.
gitlog () { git log -${3:-p} -${2:-1} $1; } usate come: gitlog Rakefileo gitlog Rakefile 5e gitlog Rakefile 10 s. Il primo mostra un diff; il secondo mostra cinque differenze; il terzo mostra dieci --no-patch.
Per vedere cosa è stato modificato in un file nell'ultimo commit:
git diff HEAD~1 path/to/file.
È possibile modificare il numero (~ 1) nell'n-esimo commit con cui si desidera diff.
HEAD~1viene sostituita <revision>, il che rende questa risposta un duplicato.
Sintassi generica:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
per tutti i file denominati "NomeFile.xml" in qualsiasi punto del repository.
Notare lo spazio tra "-" e "**"
Risposta per la tua domanda:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
come sempre con git, puoi usare un tag / sha1 / "HEAD ^" per identificare un commit.
Testato con git 1.9.1 su Ubuntu.
Se nessuno dei due commit è HEAD, l' espansione del controvento di bash si rivela davvero utile, specialmente se i nomi dei file sono lunghi, l'esempio sopra:
git diff master~20:pom.xml master:pom.xml
Potrebbe diventare
git diff {master~20,master}:pom.xml
Altro sull'espansione di Brace con bash.
Per comparare a 5 commit a quello attuale, entrambi attivi master, basta semplicemente:
git diff master~5:pom.xml master:pom.xml
Inoltre puoi fare riferimento al numero hash di commit, ad esempio se il numero hash è x110bd64, puoi fare qualcosa del genere per vedere la differenza:
git diff x110bd64 pom.xml
git diff -w origine HEAD / percorso principale / su / file
git diff master~20 -- pom.xml
Funziona se non sei anche nel ramo principale.
Se stai bene usando uno strumento grafico (o addirittura lo preferisci) puoi:
gitk pom.xml
In gitk puoi quindi fare clic su qualsiasi commit (per "selezionarlo") e fare clic con il pulsante destro del mouse su qualsiasi altro commit per selezionare "Diff this -> selezionato" o "Diff selezionato -> questo" nel menu a comparsa, a seconda dell'ordine che preferisci.
Per le persone interessate a fare lo stesso con GitHub, vedere il confronto degli commit nel tempo .
Ad esempio, se hai bisogno di diff su un singolo file in una scorta, puoi farlo
git diff stash@{0} -- path/to/file
Se stai cercando il diff su un commit specifico e vuoi usare l'interfaccia utente github invece della riga di comando (supponi di voler collegarlo ad altre persone), puoi fare:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
Per esempio:
Nota i collegamenti Precedente e Successivo in alto a destra che ti consentono di navigare attraverso tutti i file nel commit.
Questo funziona solo per un commit specifico, non per il confronto tra due versioni arbitrarie.
git diff <revision>:foo/ HEAD:foo/.