¿Cuál es la diferencia entre "git reset" y "git checkout"?
Siempre he pensado engit reset
ygit checkout
igual, en el sentido de que ambos vuelven a llevar el proyecto a un compromiso específico. Sin embargo, siento que no pueden ser exactamente lo mismo, ya que eso sería redundante. ¿Cuál es la diferencia real entre los dos? Estoy un poco confundido, ya que el svn solo tienesvn co
para revertir el commit.
lossiguiente diagrama explica la diferencia, aunque de una manera posiblemente demasiado simplificada o incorrecta. ¿Qué piensas? ¿Está mal o demasiado simplificado?
AÑADIDO 2VonC y Charles explicaron las diferencias entregit reset
ygit checkout
Realmente bien. Mi comprensión actual es quegit reset
revierte todos los cambios a una confirmación específica, mientras quegit checkout
más o menos se prepara para una sucursal. Encontré los siguientes dos diagramas bastante útiles para llegar a este entendimiento:
AGREGADO 3
Dehttp://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html, finalizar la compra y restablecer puede emular el rebase.
git checkout bar
git reset --hard newbar
git branch -d newbar