Ho sempre pensato git resete git checkoutuguale, nel senso che entrambi riportano il progetto a un impegno specifico. Tuttavia, ritengo che non possano essere esattamente gli stessi, poiché sarebbe ridondante. Qual è la differenza effettiva tra i due? Sono un po 'confuso, poiché lo svn deve solo svn coripristinare il commit.
AGGIUNTO
VonC e Charles hanno spiegato le differenze tra git resete git checkoutdavvero bene. La mia attuale comprensione è che git resetriporta tutte le modifiche a un commit specifico, mentre git checkoutpiù o meno si prepara per un ramo. Ho trovato i seguenti due diagrammi abbastanza utili per giungere a questa comprensione:

AGGIUNTO 3
Da http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html , checkout e reset possono emulare il rebase.
git checkout bar
git reset --hard newbar
git branch -d newbar
-- filesvarianti; non ne sono sicuro.) Questo diagramma fa sembrare che la differenza principale sia se influenzano l'indice o il WD. Vedi la mia risposta al riguardo. Il 2 ° e il 3 ° diagramma sono molto utili per vedere la vera differenza. Il quarto e il quinto diagramma sono utili per verificare se capisci cosa fanno questi comandi, ma non ti aiuteranno davvero ad arrivarci.
think-like-a-git.netsono necessari passaggi aggiuntivi (forniti nell'articolo collegato ) per prevenire la perdita di dati.


