viernes, 21 de octubre de 2016

Gestión de versiones en Git

Stage, Head y Pila de versiones

En Git tenemos versiones de nuestros ficheros en tres sitios distintos. El cómo pasar los ficheros a estos sitios lo vimos en mi anterior entrada:




Stage

El stage no guarda versiones de los ficheros, simplemente indica que ficheros se guardarán en la versión que generemos cuando hagamos Commit. Si modifico un fichero y lo guardo con el botón "Save", aparecerá en la lista del Stage, pero no entrará en el stage hasta que seleccione su casilla:

La versión del espacio de trabajo y la actual son distintas. La versión no será modificada al hacer commit porque no tiene la casilla marcada.
En este punto podemos descartar los cambios del espacio de trabajo simplemente desmarcando la casilla del Stage del fichero correspondiente y pulsando en la flecha "discard":


El resultado dependerá de que estemos viendo en el espacio de trabajo al hacer el discard del stage. Si estábamos en modo comparar ficheros, como en la imagen anterior, el fichero se queda como esté, pero aparecerá marcado como modificado. ¡Es como si no hubiéramos pulsado al botón de guardar después de modificarlo! Si cerramos el fichero sin guardar es como si no lo hubiéramos modificado. Si por el contrario habíamos cerrado la comparación y estábamos viendo el fichero modificado y guardado. El botón Discard dejara el fichero tal cual estaba antes de que lo modificáramos. En ambos casos el resultado final es el mismo. El fichero vuelve a su estado original.

 Head y Pila de versiones

Cada vez que hacemos commit, git crea una nueva versión de los ficheros que estén en el stage. Las versiones se guardan en la pila de versiones. La más reciente es la que esté en la cima de la pila, lo que se conoce como Head.

Cuando modificamos un fichero y hacemos doble click en la lista del stage estamos comparando la versión del espacio de trabajo con la versión guardada en el Head.


Para recuperar una version anterior solo tenemos que seleccionar en la pila la versión que queremos "revertir". CUIDADO la version seleccionada también será descartada y el nuevo Head será justa versión que esté por debajo:

Pila de versiones ANTES de descartar versiones

Las cosas no siempre salen bien y a veces git no es capaz de devolver todo a su versión adecuada, sobre todo si queremos revertir muchas versiones de golpe.



En el espacio de trabajo y en el Stage podemos ver los distintos problemas que se ha encontrado git y si no son mucho podemos tratar de irlos arreglando a base de comparar versiones y de mucha paciencia. O podemos resetear los cambios y volver a intentar revertir versiones de una en una:


Y por ahora lo dejamos aquí. En la siguiente entrega veremos una de las opciones mas interesantes de Git, la "Ramificación de Versiones".


No hay comentarios:

Publicar un comentario