Siempre he pensado git reset
, y git checkout
como el mismo, en el sentido de que ambos traen la parte posterior proyecto a un determinado comprometerse. 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 tiene svn co
que revertir el commit.
ADICIONAL
VonC y Charles explicaron las diferencias entre git reset
y git checkout
realmente bien. Mi comprensión actual es que git reset
revierte todos los cambios a una confirmación específica, mientras que git checkout
más o menos se prepara para una rama. Encontré los siguientes dos diagramas bastante útiles para llegar a este entendimiento:
AGREGADO 3
Desde http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html , el pago y el reinicio pueden emular El rebase.
git checkout bar
git reset --hard newbar
git branch -d newbar
-- files
variantes; no estoy seguro). Ese diagrama hace que parezca que la diferencia principal es si afectan el índice o el WD. Vea mi respuesta al respecto. Los diagramas segundo y tercero son muy útiles para ver la diferencia real. Los diagramas cuarto y quinto son útiles para verificar si comprende lo que hacen estos comandos, pero realmente no lo ayudará a llegar allí.
think-like-a-git.net
se requieren pasos adicionales (proporcionados en el artículo vinculado ) para evitar la pérdida de datos.