git reset
Borrando Commits
Aunque no es algo que se recomiende realizar ya que estamos borrando datos de la historia del proyecto puede que en algún momento por una equivocación, por un bug o por mantener un estándar de commits tu debas o quieras utilizar el comando reset.
Existen 5 tipos de reset:
- reset --soft
- reset --mixed
- reset --hard
- reset --keep
- reset --merge
en este post se mirara el funcionamiento de los 3 primeros y para entender el funcionamiento de estos debemos recordar los estados que posee git
como lo son el working directory, staging area y git directory
vamos a realizar un ejemplo de como modificar nuestro proyecto con estos tipos de reset.
como consejo siempre se debe guardar el SHA (Secure Hash Algorithm) de el último commit que tenemos en nuestra historia por si nos equivocamos en este procedimiento podamos retornar al estado desde el cual comenzamos con un git checkout <SHA del commit>
Soft
Siguiente realicemos un git reset soft desde el commit número 4 de arriba hacia abajo y un git status que nos mostrará el estado del proyecto .
Lo que se evidencia en la imagen es que tenemos cambios en nuestro proyecto que están en el staging area esperando a ser agregados a la historia del proyecto por medio de un commit.
Para finalizar verificamos la historia del proyecto la cual nos muestra cómo la historia del proyecto tiene como HEAD el commit que seleccionamos anteriormente
En conclusión el reset -- soft nos elimina los commit superiores al seleccionado dejándonos los cambios realizados en el stage area
A continuación nos devolveremos con el comando git checkout al commit original,crearemos una rama a partir de ese commit y trabajaremos con esta rama para demostrar la utilización de los otros tipos de reset.
Mixed
Se realiza la obtención del SHA del commit el cual será el mismo del ejemplo anterior y procederemos a ejecutar el reset
Realizando un git status se puede evidenciar que todos nuestros cambios han sido enviados al working directory y están esperando a ser agregados al proyecto
Hard
Por último el reset mas peligroso ya que este elimina toda la información de los commit superiores al seleccionado es el reset --hard
Lo realizaremos con el mismo proyecto y commit para poder ver las diferencias.
En este caso no solo nos llevo al commit indicado si no que toda la información que hubiéramos modificado en estos commits ha sido completamente eliminada y no podremos acceder a ella
Recordemos que estos tipos de reset nos sirven para eliminar bloques de commit que estén errados o que ocasionen fallas en el sistema, si lo que se quiere es eliminar commit que están en el medio de la historia se debe llevar a cabo otro comando como lo es cherry pick el cual nos ayudará a seleccionar y pasar de una rama a otra un commit seleccionado
Comentarios
Publicar un comentario