Quando lo faccio git diff COMMIT
vedo i cambiamenti tra quel commit e HEAD (per quanto ne so), ma vorrei vedere i cambiamenti che sono stati fatti da quel singolo commit.
Non ho trovato opzioni ovvie su diff
/ log
che mi daranno quell'output.
Quando lo faccio git diff COMMIT
vedo i cambiamenti tra quel commit e HEAD (per quanto ne so), ma vorrei vedere i cambiamenti che sono stati fatti da quel singolo commit.
Non ho trovato opzioni ovvie su diff
/ log
che mi daranno quell'output.
Risposte:
Per vedere il diff per un particolare COMMIT
hash:
git diff COMMIT~ COMMIT
ti mostrerà la differenza tra quell'antenato COMMIT
e il COMMIT
. Vedi le pagine man per git diff per i dettagli sul comando e gitrevisions sulla ~
notazione e sui suoi amici.
In alternativa, git show COMMIT
farà qualcosa di molto simile. (I dati del commit, incluso il suo diff - ma non per i merge commit.) Vedi la manpage git show .
^
necessario citare le conchiglie Thomson e Bourne (sinonimo di |
lì) e i rc
suoi derivati (operatore di controllo) e in zsh
con abilitato al not
globo esteso ( operatore di globbing)
HEAD^
implica il primo genitore nel caso in cui un commit abbia più genitori (vale a dire unire il commit).
git diff COMMIT~ COMMIT
funziona per me, nota la tilde invece del cursore. Sto eseguendo git versione 2.6.1.windows.1 su Windows 10.
Come accennato in " Abbreviazione di diff di git commit con il suo genitore? ", Puoi anche usare git diff
con:
git diff COMMIT^!
o
git diff-tree -p COMMIT
Con git show, dovresti (per concentrarti solo sul diff) per fare:
git show --color --pretty=format:%b $COMMIT
Il COMMIT
parametro è un commit-ish :
Un oggetto commit o un oggetto che può essere ricondizionato in modo ricorsivo a un oggetto commit. Di seguito sono riportati tutti i commit-ishes: un oggetto commit, un oggetto tag che punta a un oggetto commit, un oggetto tag che punta a un oggetto tag che punta a un oggetto commit, ecc.
Vedere gitrevision "SPECIFICARE LE REVISIONI" per fare riferimento a un commit-ish.
Vedi anche " Che cosa significa albero-ish in Git? ".
Puoi anche provare questo modo semplice:
git show <COMMIT>
git show
mostra le modifiche apportate al commit più recente.
Equivalente a git show HEAD
.
git show HEAD~1
ti riporta indietro di 1 commit.
Per prima cosa ottieni l'ID commit usando,
git log #to list all
O
git log -p -1 #last one commit id
Copia ID commit.
Ora utilizziamo due metodi per elencare le modifiche da un commit specifico,
Metodo 1:
git diff commit_id^! #commit id something like this 1c6a6000asad012
Metodo 2:
git show commit_id
For example: git show 1c6a600a
^!
significa ??
git show <commit_sha>
Questo ti mostrerà solo cosa c'è in quel commit. Penso che puoi fare un intervallo semplicemente inserendo uno spazio tra due shas di commit.
git show <beginning_sha> <ending_sha>
il che è molto utile se stai eseguendo la rebasing spesso perché i log delle funzionalità saranno tutti in fila.
Dalla pagina man di git-diff (1) :
git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>
Usa il terzo al centro:
git diff [options] <parent-commit> <commit>
Sempre dalla stessa pagina man, in fondo, nella sezione Esempi :
$ git diff HEAD^ HEAD <3>
Confronta la versione prima dell'ultimo commit e dell'ultimo commit.
Certo, è un po 'confuso, sarebbe meno confuso
Confronta il commit più recente con il commit precedente.
git diff HEAD HEAD^
.
Quanto segue sembra fare il lavoro; Lo uso per mostrare ciò che è stato portato da una fusione.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git log
? (a causa di stackoverflow.com/a/18585297/6309 )
Un'altra possibilità:
git log -p COMMIT -1
Puoi usare git diff HEAD HEAD^1
per vedere il diff con il commit parent.
Se vuoi solo vedere l'elenco dei file, aggiungi l' --stat
opzione.
diff
comando è: cosa dovrei cambiare nel file per ottenere da commit HEAD
a commit HEAD^1
?
git difftool COMMIT^ <commit hash>
è anche possibile se hai configurato il tuo difftool.
Vedi qui come configurare difftool O la pagina del manuale qui
Inoltre è possibile utilizzare git diff-tree --no-commit-id --name-only -r <commit hash>
per vedere quali file sono stati modificati / impegnati in un hash di commit commit
Per vedere autore e ora in base al commit, utilizzare git show COMMIT
. Il che si tradurrà in qualcosa del genere:
commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date: Fri Jul 24 17:46:42 2015 -0700
Merge remote-tracking branch 'origin/your-feature'
Se vuoi vedere quali file sono stati modificati, esegui quanto segue con i valori dalla riga Unisci sopra git diff --stat a2a2894 3a1ba8f
.
Se vuoi vedere l'attuale diff, esegui git --stat a2a2894 3a1ba8f
git --stat a2a2894 3a1ba8f
". Penso che tu intenda git diff a2a2894 3a1ba8f
altrimenti unknown option: --stat
.
Per verificare le modifiche complete:
git diff <commit_Id_1> <commit_Id_2>
Per controllare solo i file modificati / aggiunti / eliminati:
git diff <commit_Id_1> <commit_Id_2> --name-only
NOTA : per controllare diff senza commit tra, non è necessario inserire gli ID di commit.
Sto eseguendo Git versione 2.6.1.windows.1 su Windows 10, quindi avevo bisogno di una leggera modifica alla risposta di Nevik (tilde anziché caret):
git diff COMMIT~ COMMIT
Un'altra opzione è quella di citare il cursore:
git diff "COMMIT^" COMMIT
Questo comando ti porterà il commit-hash del genitore Git:
git log -n 2 <commit-hash>
Dopo di che git diff-tool <commit-hash> <parent-commit-hash>
Esempio:
bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3
commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
Date: Mon Jul 25 13:17:07 2016 +0530
CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.
commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <souparno.majumder@gmail.com>
Date: Mon Jul 25 11:28:09 2016 +0530
The ratio of the height to width of the channel images are maintained.
Dopodichè
git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
In caso di controllo della modifica della sorgente in una vista grafica,
$gitk (Mention your commit id here)
per esempio:
$gitk HEAD~1