Inicio » Cursos » Fundamentos de Git Básico

Curso Fundamentos de Git Básico

Capitulo 6 ➜ Usando checkout para revisar commits | Capitulo 6

Usando checkout para revisar commits | Capitulo 6

Usando checkout para revisar commits | Capitulo 6

Ahora tenemos que empezar a ver todo lo referente a las ramas y como movernos a través de ellas, esto como preludio a la ultima lección sobre GitHub.

  • Opciones para el git log
  • Comando: git checkout [commit]
  • ¿Qué significa detached head? y ¿Qué es el head?
  • ¿Cómo salir del estado detached head?
  • Commits no conectados a ninguna rama
  • Ramas

Opciones para el git log

Empecemos con algunos subcomandos/opciones especiales del git log, si revisamos la documentación, notaremos que podemos hacer que el git log nos muestre información muy específica, en las lecciones anteriores usábamos el git log, asi sin mas, y nos mostraba el nombre del autor que hizo el commit y la fecha en la que fue hecha el commit, pero puedes empezar a ver cosas como la longitud del mensaje de un commit en bytes (--log-size) o tambien podrias limitar el número de commits que quieres ver (-n + número de commits), bueno son muchas opciones disponibles pero las que quiero enseñarles no tiene que ver con limitar commits sino con el formato, el primero es oneline, oneline es la forma abreviada de otras dos opciones, es decir tu puedes escribir el siguiente comando:

git log --pretty=oneline --abbrev-commit

y estarías obteniendo el mismo resultado, que solo agregar oneline al git log, y si se preguntan ¿qué hace el comando anterior? son dos opciones, la primera es “prety=oneline”, que solo te muestra el mensaje del commit, quitando el autor y la fecha que normalmente acompañan el git log; y ¿que hace la segunda opción? “abbrev-commit” ese comando se encarga de cambiar el id del commit haciendo que ya no sea tan largo como normalmente se nos muestra, y es mejor, realmente con los primeros caracteres basta para realizar cualquier operación con el commit, operaciones que ya vimos antes como por ejemplo el git reset las hacíamos copeando todo el id del commit y eso no era necesario, basta solo con copiar los primeros siete caracteres que ofrece el comando.

la segunda opción que quiero enseñarles tiene que ver con los cambios o diferencias que hay en tus archivos, se trata de la opción “--stat” subcomando que sumado al git log te mostrará, la cantidad de cambios que has hecho en cada archivo con el pasar de los commits; el comando completo sería el que tienen a continuación y tendría las ventajas antes vistas, nos presenta el id (más breve) y el mensaje del commit, ambos en una línea, quitando el autor y la fecha, y también están los gráficos que listan los archivos en cada commit, junto con unos símbolos de más que representan los cambios hechos y acompañando cada commit hay un mensaje, el del commit más reciente pone “3 archivos cambiados, 5 inserciones (+)” refiriéndose a que en ese commit se editaron 3 archivos; si hacemos memoria el commit “un párrafo en A y B” tenía eso, un párrafo en A y B al editar al hacer enter y agregar un párrafo nuevo tanto en A y B se cuentan 2 cambios, por eso a y b tienen 2 símbolos de mas y C solo uno porque a él recién le agregamos su primer párrafo. 

git log --oneline --stat

Comando: git checkout [commit]

git checkout

Copie el id del primer commit que ha hecho (archivos vacíos) y digite el comando “git checkout” seguido del id copiado, lo que sucede al ejecutarlo es que te saldrán los mensajes mostrados en la imagen anterior, el primero se refiere a que estamos viendo los archivos tal como estaban en el commit “archivos vacíos” (c3d1bb7) luego pone otro mensaje que parafraseando un poco dice “tu te encuentras en el estado detached head mientras estes asi puedes hacer cambios y hacerlos commits, puedes descartar cualquier commit hecho en este estado cambiando de rama, de esa forma no afectas las demás ramas existentes” primero, detached head se refiere a que el “head” ya no es el commit más reciente. 

¿Qué significa detached head? y ¿Qué es el head?

head

El head es el indicador de donde nos encontramos, observen la imagen anterior, los commits superiores a “archivos vacíos” ya no están visibles porque tus archivos ahora son como estaban en aquel primer commit; antes el head era el último commit donde nos encontrábamos, era donde nos quedamos en nuestro avance, pero al hacer el git checkout hacia el commit “archivos vacíos” quitamos ese head y lo mandamos al commit “archivos vacíos” de hay proviene el estado de “detached head”, que de hecho, si en este estado haces un “git log” solo veras el commit “archivos vacíos”. 

¿Cómo salir del estado detached head?

git checkout master

Con el "git checkout" tu podrias volver a cualquier commit que gustes y si luego quieres volver a la normalidad, es solo hacer checkout a master por qué “git checkout” también recibe ramas no solo ids de commits, al darle master (la rama inicial) pides que se te regrese al commit más reciente de la rama dada, es este caso el commit más reciente de master es exacto donde nos quedamos.

Commits no conectados a ninguna rama

advertencia del checkout

Volviendo al mensaje, la parte que seguía hacía hincapié en “puedes hacer cambios y luego pasar esos cambios a commit” ¿porque? Mientras estemos en el estado detached head, tú puedes hacer cambios, como agregar un primer párrafo en tus archivos, pero luego de ese cambio tu si o si deberás completar el commit, porque si ahora mismo, con este cambio, quisiera volver la normalidad, git te daria error, git abortará la operación porque debes guardar tus cambios en un commit antes de cambiar de rama, a eso se refería el mensaje con que puedes hacer cambios, si que puedes, pero debes convertirlos a commit, luego de hacer tu commit, ahora si que podras regresar a Master. El comando checkout normalmente es para moverte entre ramas por lo que al usarlo en commits y asu vez hacer más commits mientras estás de visita en otro commit, (lo que acabamos de hacer) provocamos la advertencia que ven en la imagen anterior: “estás dejando 1 commit atrás no conectado a ninguna de tus ramas” ocurre que los commit no son ramas, lo que acabamos de hacer regresando a un commit con checkout es algo así como una suerte de pseudo rama, porque el commit que hicimos en el detached head, ya está destinado a desaparecer a menos que conectes ese commit a una rama real.

Ramas

ramas

Ramas, tú puedes crear una rama desde un commit en específico justamente con el comando que salía en la advertencia de la imagen anterior, poniendo un nombre a tu rama y al final el id del commit desde el que quieres que se cree la rama, pero ahora mismo vamos a crear una rama a partir de nuestra posición actual, de hecho es mejor que no trabajes en master y que tengas una rama secundaria donde sí que trabajes tus cambios, hable de eso brevemente en la lección uno, ahora bien, escribimos “git branch Desarrollo”, ese será el nombre de la rama, desarrollo, pero ten en cuenta que seguimos en master, para cambiar de rama usas checkout con el nombre de la rama a la quieres saltar, y ahora quiero que agreguemos más párrafos a nuestros archivos, en mi caso mis archivos A y B ya tendrían 3 parrafos y seria el segundo recien para C, esto lo hago para que esta rama también tenga sus propios commits, asi que eso conviertan estos cambios en un commit, con el mensaje “tres párrafos en A y B y dos en C” si revisan su git log, notaran que el head, ahora esta apuntando a la rama Desarrollo porque pues es donde estamos ahora, por si aún no se entiende, regresamos a master y aqui revisamos el git log. Asi de facil es moverte entre los comits que hayas hecho gracias a las ramas; ahora es un buen momento para dejar la lección aquí, hemos visto muchas cosas hasta ahora, y la próxima lección será el final de este curso básico introductorio, así que solo recordarles que vayan creándose una cuenta en GitHub si aun no la tienen.


402 visitas

Sigue con el curso: Capítulo 7 – Subiendo un repositorio a #github | Capitulo 7

Más cursos que pueden interesarte

Más cursos

Codea Codea App

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2023