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 showstampa 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 HEADtratta 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^ HEADmostrerà 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 -aquando 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
-aquando esegui il commit, puoi semplicemente utilizzare git diff. <1> git diffmostra le modifiche non messe in scena . <2> git diff --cachedmostra le modifiche graduali . <3> git diff HEADmostra 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~1per 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 HEADdel 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^ HEADdovrebbe essere git diff @^!. Vedi git-scm.com/docs/gitrevisions perr1^!
Usa la cachedbandiera 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 )