Sigamos revisando algunos comandos de GIT. Si necesitamos ir a un commit anterior debemos saber su id, el id es un hash del commit, por lo tanto podemos listar todos los commit recientes con :
$ git log
Luego podemos ir hasta el commit determinado con :
$ git reset --hard SHA1_HASH
Ojo esto va a borrar a los commit más nuevos. Pero si queremos saltar a un estado anterior temporalmente usamos :
$ git checkout SHA1_HASH
Esto te lleva atrás en el tiempo, sin tocar los commits más nuevos. Sin embargo,
como en los viajes en el tiempo de las películas de ciencia ficción, estarás en una
realidad alternativa, porque tus acciones fueron diferentes a las de la primera
vez. Esta realidad alternativa se llama branch (rama). Por ahora solo recordemos que :
$ git checkout master
te llevará al presente. También, para que Git no se queje, siempre debemos hacer un commit o resetear los cambios antes de ejecutar checkout.
Puedes elegir commits específicos para deshacer.
$ git commit -a
$ git revert SHA1_HASH
va a deshacer solo el commit con el hash dado. Ejecutar git log revela que el
revert es registrado como un nuevo commit.
Hasta ahora solo hemos trabajado con nuestro repositorio local que es un poco raro, normalmente tambien tenemos un repositorio remoto donde poder compartir código con los demás desarrolladores. Si queremos obtener una copia de un repositorio remoto debemos clonar este repositorio:
$ git clone git://servidor/ruta/a/los/archivos
luego de clonarlo podemos obtener su última versión con pull :
$ git pull