Usando Git, come puoi trovare la differenza tra l'attuale e l'ultima versione?
git diff last version:HEAD
Usando Git, come puoi trovare la differenza tra l'attuale e l'ultima versione?
git diff last version:HEAD
Risposte:
Non capisco davvero il significato di "ultima versione".
Dato che è possibile accedere al commit precedente con HEAD ^, penso che tu stia cercando qualcosa come:
git diff HEAD^ HEAD
A partire da Git 1.8.5, @
è un alias per HEAD
, quindi puoi usare:
git diff @~..@
Funzionerà anche:
git show
Se vuoi conoscere la differenza tra head e qualsiasi commit puoi usare:
git diff commit_id HEAD
E questo avvierà il tuo strumento diff visivo (se configurato):
git difftool HEAD^ HEAD
Poiché il confronto con HEAD è predefinito, puoi ometterlo (come sottolineato da Orient ):
git diff @^
git diff HEAD^
git diff commit_id
~
personaggio deve essere usato al posto di ^
.@
è un alias per HEAD
. E poiché ~
e ^
sono gli stessi quando si esegue solo un commit indietro, trovo git diff @~..@
molto più facile da digitare.
git show
è ancora più facile, poiché @~..@
è la cosa predefinita da mostrare.
git show
stampa semplicemente il messaggio di commit, non genera una diff delle modifiche specifiche, almeno in Git 2.5.4 (Apple Git-61), quindi in realtà non sarebbe una risposta alla domanda del PO.
git show
è che se si HEAD
tratta di un commit di merge non otterrai ciò che ti aspetti dal momento che il commit di merge stesso potrebbe non avere alcuna modifica. git diff HEAD^ HEAD
mostrerà le modifiche effettive tra le versioni
Supponendo che "versione corrente" sia la directory di lavoro (modifiche senza commit) e "ultima versione" sia HEAD
(ultime modifiche impegnate per il ramo corrente), semplicemente
git diff HEAD
Il merito di quanto segue va all'utente Cerran
.
E se salti sempre l'area di gestione temporanea con -a
quando esegui il commit, puoi semplicemente utilizzare git diff
.
Sommario
git diff
mostra le modifiche non messe in scena.git diff --cached
mostra le modifiche organizzate.git diff HEAD
mostra tutte le modifiche (sia in scena che non in scena).Fonte: Pagina di manuale git-diff (1) - Cerran
-a
quando esegui il commit, puoi semplicemente utilizzare git diff
. <1> git diff
mostra le modifiche non messe in scena . <2> git diff --cached
mostra le modifiche graduali . <3> git diff HEAD
mostra tutte le modifiche (sia in scena che non in scena). Fonte: Pagina di manuale git-diff (1)
Come sottolineato da un commento di amalloy , se per "versioni attuali e ultime" intendi l'ultimo commit e il commit precedente, puoi semplicemente usare
git show
git show HEAD~1
per mostrare l'ultimo commit tranne uno git show HEAD~2
, ecc. Per i commit più vecchi. Mostra solo un singolo file tramite git show HEAD~2 my_file
.
Differenza tra l'ultimo ma un commit e l'ultimo commit (più l'eventuale stato corrente):
git diff HEAD~
o anche (più facile da digitare)
git diff @~
dove @
è il sinonimo HEAD
del ramo corrente e ~
significa "dammi il genitore della revisione citata".
git diff HEAD^
(piuttosto che la HEAD~
forma equivalente ). È un po 'più facile da ricordare per un "vecchio idiota" come me ;-)
~
e il @
significato.
diff HEAD^ HEAD
dovrebbe essere git diff @^!
. Vedi git-scm.com/docs/gitrevisions perr1^!
Usa la cached
bandiera se hai aggiunto, ma non hai ancora eseguito il commit:
git diff --cached --color
Innanzitutto, utilizzare " git log
" per elencare i registri per il repository.
Ora, seleziona i due ID di commit, relativi ai due commit. Volete vedere le differenze ( esempio : il maggior numero di commit e alcuni di quelli più vecchi (secondo le vostre aspettative per la versione corrente e qualche versione precedente) ).
Quindi, utilizzare:
git diff <commit_id1> <commit_id2>
o
git difftool <commit_id1> <commit_id2>
Se il commit principale è indicato da HEAD, puoi fare qualcosa del genere:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Diff tra il primo e il secondo commit:
git diff HEAD~1 HEAD
Differenza tra primo e terzo commit:
git diff HEAD~2 HEAD
Differenza tra secondo e terzo commit:
git diff HEAD~2 HEAD~1
E così via...
Uso Bitbucket con l' IDE Eclipse con il plugin Eclipse EGit installato.
Confronto un file da qualsiasi versione della sua storia (come SVN ).
Menu Esplora progetti → File → tasto destro → Team → Mostra nella cronologia .
Questo porterà la cronologia di tutte le modifiche su quel file. Ora Ctrlfai clic e seleziona due versioni → "Confronta tra loro" .
Questo funzionerà anche per i tag (rimuovere 'uniq' di seguito e altre parti se è necessario vedere tutte le modifiche):
git diff v1.58 HEAD
Quello che segue è lo stesso e potrebbe essere utile per l' integrazione continua (CI) per i microservizi in un repository monolitico:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Credito - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )