6 Commit, commit, commit

6.1 Panel Git en RStudio

Si hemos hecho todo bien hasta ahora podremos ver el panel Git en la sección superior derecha de RStudio. En este panel aparecen los archivos que mencionamos antes y los botones con los principales comandos de Git.

Fig. 5. Panel Git: Nuevo proyecto

Fig. 5. Panel Git: Nuevo proyecto

6.2 Commit

Hacer un commit es básicamente registrar los cambios hechos en el repositorio. Esto significa que git creará una especie de fotografía o registro del estado en que se encuentran todos los archivos al momento del commit. En la práctica, dado que muchas veces sólo algunos archivos cambiarán, Git registra solamente los archivos que cambian y asume que el resto se mantiene igual a su versión anterior.

Los commit que hagas quedarán registrados en un historial donde podrás ver los cambios de cada archivo y que te permitirá volver a las versiones anteriores de los archivos o del proyecto completo si así lo deseas.

6.3 Primer commit

Haremos el primer commit de nuestro proyecto para registrar su estado inicial. Cada vez que hagamos un commit tendrás que ver qué cambios has hecho, qué cambios quieres incluir en el commit, y realizar el commit.

6.3.1 ¿Qué ha cambiado?

Podemos ver los archivos que registran cambios en el panel de Git. Para ver los cambios de forma más detallada seleccionaremos Commit en el panel de Git. Se abrirá otra ventana donde podrás seleccionar los archivos con cambios. En este caso, los archivos que se crearon nuestro proyecto tendrán dos signos de interrogación amarillos, esto significa que son archivos nuevos y que los cambios aun no están siendo seguidos por Git.

Fig. 6. Panel Git: Ventana Commit

Fig. 6. Panel Git: Ventana Commit

6.3.2 ¿Qué voy a incluir en el commit?

Dado que nuestro objetivo es registrar el estado inicial de nuestro proyecto, seleccionaremos los dos archivos que se han creado con nuestro proyecto. Para incluirlos en el commit debemos llevarlos al Stage, para esto marcamos la casilla de la columna Staged junto al nombre de cada archivo. Al hacer esto el estatus cambiará a una A verde. Adicionalmente, al seleccionar los archivos, en la parte inferior de la ventana podrás ver las lineas que han cambiado. Las lineas verdes son aquellas que se han creado. En este caso todas las lineas son verdes ya que ambos archivos son nuevos.

Fig. 7. Panel Git: Ventana Commit

Fig. 7. Panel Git: Ventana Commit

6.3.3 Commit!

Ahora que hemos seleccionado los archivos podemos crear un commit que quedará en la historia de cambios de nuestro proyecto. Antes de seleccionar Commit tendremos que escribir un mensaje corto en la casilla bajo Commit message. Este mensaje debería decir de forma concisa qué ha cambiado y por qué. Intenta ser lo más claro y breve posible, ya que esto será fundamental cuando vuelvas a la historia de tu repositorio en busca de algún cambio en particular.

Una vez que le des a Commit una ventana con el resumen de los cambios que has incluido en el commit aparecerá. Enesta ventana podrás ver que 2 archivos cambiaron, y que estos cambios consisten en 17 lineas que fueron insertadas (2 files changed, 17 insertions(+)).

Fig. 8. Panel Git: Ventana Commit

Fig. 8. Panel Git: Ventana Commit

6.3.4 Por favor README!

Cada vez que crees un repositorio, o en general un proyecto, es bueno que lo acompañes de una breve descripción que indique el tema y cualquier información relevante para alguien que se enfrente a tu proyecto por primera vez. Si bien esto puede parecer innecesario si estás trabajando sólo, será de gran ayuda si por alguna dejas de trabajar en tu proyecto y lo retomas semanas o meses después. Mientras menos cosas dependan de tu memoria, menos cosas saldrán mal.

Generalmente la descripción del proyecto se encuentra en un archivo README. Para que el archivo sea compatible con Git, crearemos un archivo de texto plano (.txt, no Microsoft Word ni similares).

6.3.5 Crea un nuevo archivo

Crearemos este nuevo archivo seleccionando File > New File > Text File en RStudio y lo guardaremos en la carpeta principal del proyecto que hemos creado, en mi caso:
learn2git/README.txt

El nuevo archivo aparecerá en el panel Git con signos de interrogación amarillos junto al nombre (recuerda, dos signos de interrogación amarillos indican archivos nuevos). Ahora puedes escribir una descripción en el archivo README que has creado y guardarlo nuevamente.

Fig. 8. Panel Git: Ventana Commit

Fig. 8. Panel Git: Ventana Commit

Una vez que hayas terminado la descripción de tu proyecto, guarda el archivo y en el panel de Git llevalo al Stage, escribe un mensaje para tu commit, y selecciona Commit para registrar la forma inicial de tu archivo README en la historia Git de tu proyecto.

Has creado tu segundo commit y Git ahora registrará los cambios que hagas en tu archivo README.

6.3.6 Cambia, todo cambia

Git registrará cualquier cambio que hagas a los archivos que has incluido en los dos commit que has hecho hasta ahora. Los cambios siempre se registrán en comparación a la última versión que incluiste en un commit.

Abre el archivo README, agrega una linea al final y guarda el archivo. En el panel Git el Status del archivo README cambiará a una M de color azul, esto significa Modificado (modified). Para ver cuál fue la modificación selecciona Commit en el panel Git y luego selecciona el archivo que has modificado. En la parte inferior de la ventana podrás ver las nuevas lineas resaltadas con verde y las lineas antiguas (las que ya no existen) resaltadas con rojo.

Fig. 9. Panel Git: Ventana Commit

Fig. 9. Panel Git: Ventana Commit

Cuando estés satisfecho crea un commit con los cambios que has hecho en en README. Recuerda agregar un mensaje al commit que sea distinto a los anteriores.

6.3.7 Historial de commits

Ahora podemos ver los commits creados y ver los cambios hechos desde que comenzamos nuestro proyecto.

Si aun estás en la ventana donde creaste el commit selecciona History en la esquina superior izquierda. Si cerraste esa ventana puedes volver a ella seleccionando Commit en el panel Git de RStudio.

La mitad superior de la ventana muestra los commits, el autor, la fecha y una llave SHA (este es un identificador único para cada commit). La mitad inferior muestra los cambios hechos en cada commit.

Fig. 10. Panel Git: Ventana Commit

Fig. 10. Panel Git: Ventana Commit