Volver en el tiempo en nuestro repositorio utilizando reset y checkout
Resumen
El comando git checkout + ID del commit nos permite viajar en el tiempo. Podemos volver a cualquier versión anterior de un archivo específico o incluso del proyecto entero. Esta también es la forma de crear ramas y movernos entre ellas.
También hay una forma de hacerlo un poco más "ruda": usando el comando git reset. En este caso, no solo "volvemos en el tiempo", sino que borramos los cambios que hicimos después de este commit.
Hay dos formas de usar git reset: con el argumento --hard, borrando toda la información que tengamos en el área de staging (y perdiendo todo para siempre). O, un poco más seguro, con el argumento --soft, que mantiene allí los archivos del área de staging para que podamos aplicar nuestros últimos cambios pero desde un commit anterior.
Acá les dejo mis anotaciones, para quienes les puedan servir :)
Muchas gracias, se sirvió bastante.
gracias por el resumen!
Wow que lindo, sería genial adaptarlo a una infografía.
Gracias por el aporte
Ánimo compañeros! :D
tus resumenes son muy buenos
yo se de donde saco esas imagenes pero no dire nada jajaj ... mas bien felicidades por compartir material
Momazo
buen momo rifado XD
wow esto está genial, muchas gracias por el aporte!!
Gracias Master.
Al principio es muy dificil entender los conceptos del stage y el commit, lo se. Pero a mi me funciono verlo como una tienda. Les comparto:
Pensemos en una tienda donde comprar un plato de ensalada preparado con tus propias manos. Tu eliges los vegetales y tambien puedes comprar mas de uno.
En el momento que entras a la tienda es tu git init, todo ahi esta pero no todo lo vas a comprar, solo lo tienes a disposicion.
Entonces preparas un plato poniendo los vegetales e ingredientes. Haces lo mismo con dos o mas platos. Pero solo los que al final vas a comprar los pones en el carrito de compras, ese es tu git add plato_1. Lo que no lo ignoras git ignore plato_2.
Tal ves quieras sacarlos del carrito, eso seria git reset HEAD, pero si queres deshacer un plato que ya elaboraste, como que le quitas todo y pones todos lo vegetales en su lugar de regreso seria git rm --cached
Al final, llevas tu carrito de compras (stage) a la caja para pagar, el cajero te pide un texto o algo para ponerlo en tu recibo de compra, eso seria tu git commit -m "Mi primera compra aqui". El cajero te da tu numero de recibo (JH6GFD67KJB889JJJNH....)
Asi, si quisieras volver a crear un plato en especifico que creaste en alguna de tu compras anteriores usas git checkout JH6GFD67KJB889JJJNH.... plato_X para volver a tenerlo en tu mano, pero recuerda que tienes que volver a ponerlo en el carrito antes de pasar a la caja. O si pensandolo bien no lo querias, lo regresas con git checkout master plato_x
Con esta analogia, se me ha hecho mas facil ir entendiendo las cosas nuevas que voy aprendiendo de git conforme pasa el tiempo. Solo es cosa de ir encajando todo en su lugar, espero que les sirva a alguno de ustedes tambien.
Interesante Analogia, muy bien (y)
Gracias buena analogía
Me gustaría recomendarles una configuración para git log que vimos en un curso anterior de Platzi de Git. Con esta configuración conseguiremos ver nuestro log se vea de una forma un poco más amigable y fácil de leer.
Para ello simplemente tenemos que agregar a nuestra configuración de git un alias: un alias es un atajo para no escribir tanto código. Para ello lo que tenemos que hacer es escribir el siguiente comando en nuestra terminal:
Con esto agregaremos un “nuevo comando” para git llamado: git superlog. Recuerden que pueden asignar el alias que quiera, en mi caso fue superlog. Ahora cada vez que escribamos dicho comando nos aparecerá el log de la siguiente manera:
En la parte izquierda de color azul viene el identificador del commit (SHA) para que podamos movernos en el tiempo de manera rápida. (Por supuesto se pueden cambiar los colores a unos diferentes de los que puse.)
Este es el tercer curso de Git que doy aquí en Platzi y siempre mejora al anterior en sencillez y claridad. Gran curso y gran trabajo por parte de Freddy y del equipo de Teaching 😊
A nunca parar de aprender !
genial, se ve mas entendible, gracias por compartir.
Les recomendo que antes de realizar este alias entiendan que significan cada termino, ademas tambien entiendan como funcionan los alias por que si hacen esto solo funcionara en su terminal no en todas las terminales.
Por no saber lo de la bendita Q, no saben las veces que reinicié la terminal jajaj :(
me paso igual.
A mi me tocó aprenderlo apretando todos los botones, hasta que vi que la Q era la única que no sonaba.
Gracias por el aporte.
nunca cambio de leccion hasta ver tus resumenes , muchisimas gracias
¡¿Usted está loco?!
Préstenle muchísma atención a esta clase. En serio, jueguen con el Git Reset todo lo que puedan, yo he borrado un montón de cosas que no quería por utilizar mal el git reset.
Para no escribir todo el codigo html basta con escribir html:5 en un archivo html y darle enter
ya lo podía decir el profesor, que va sumamente rápido y encima ponen cámara rápida para no ver como se hace, lo escribí todo y mas de media hora viendo por qué no me funcionaba, mientras con la cámara rápida era milisengundos sin verse nada, que perdida de tiempo, gracias por pensar el los alumnos
justo el comentario que estaba buscando, no recordaba como era el codigo ://
Eliminar archivos
$git rm --cached: Elimina los archivos que estén en staging.
$git rm --force: Elimina los archivos tanto de Git como en el disco duro.
Comparar commits de archivos
$git diff commit1 commit2.
Volver a versiones anteriores del archivo
$git reset --soft: Elimina las versiones posteriores a la que queremos volver, sin embargo, los archivos staging siguen intactos.
$git reset --hard: Elimina las versiones posteriores a la que queremos volver, incluyendo los archivos staging.
$git reset HEAD: Hace que los archivos staging se vuelvan unstaged.
$git checkout: Al contrario de los $git reset, este es solo darle un vistazo a como era el archivo, ya que no elimina los comits, hay dos formas de usarlo:
1)$git checkout ID DEL COMMIT NOMBRE DEL ARCHIVO: vuelves a la versión anterior, puedes hacer que esa versión sea la última usando $git add.
2)$git checkout master: Hace que volvamos a la versión del último commit.
Gracias es un excelente aporte!
Hola chicos, alguien sabe porque despues de usar Git log, no me deja escribir en la consola? que tengo que hacer?
Hola Javier, tienes que salir de esa vista, puedes hacerlo pulsando la tecla Q
Muchas gracias
Un dato curioso: realmente si se puede revertir un git reset --hard, pero solo si tienes el hash del commit del head que estaba antes de que lo hicieras (por eso es muy importante antes de hacer git reset --hard, primero hacer un git log y guardar los hashes en alguna parte si te arrepientes)
jajaja que crazy
gracias, me copio la informacion
Al final hice un cagadero con las versiones, creo que tendré que volver a empezar jajaja.