17  Introducción al control de versiones

El control de versiones y la colaboración en línea son prácticas cada vez más importantes en el análisis estadístico y la ciencia de datos. Git y GitHub permiten gestionar de manera eficiente los cambios en los archivos de un proyecto, compartir el trabajo con otros y mantener un historial completo de todas las modificaciones realizadas. Aunque estas herramientas pueden parecer complejas al principio, su integración con RStudio y su utilidad en proyectos de cualquier tamaño justifican su aprendizaje y uso desde etapas tempranas (Bryan, 2018).

17.1 ¿Qué es Git y por qué es importante?

Git es un sistema de control de versiones distribuido ampliamente adoptado en la comunidad científica y de desarrollo de software. Su principal fortaleza radica en la capacidad de gestionar de manera eficiente el historial de cambios, facilitar la colaboración entre múltiples usuarios y permitir la experimentación segura mediante la creación de ramas (branches) (Bryan, 2018; The Turing Way Community, 2023).

La integración de Git con entornos de desarrollo como RStudio simplifica su uso en proyectos de cualquier tamaño. Esta integración permite restaurar versiones anteriores de los archivos, identificar el origen y la motivación de las modificaciones, y experimentar con nuevas ideas sin comprometer el trabajo previo. Además, Git ayuda a reducir el riesgo de pérdida de información, ya que los archivos pueden ser restaurados a cualquier estado anterior (Bryan, 2018).

17.2 GitHub: Plataforma para la colaboración y la ciencia abierta

GitHub es una plataforma en línea que permite alojar repositorios de Git, compartir proyectos y colaborar con otros usuarios. Ofrece herramientas para la gestión de proyectos, seguimiento de incidencias (issues), revisión de código y documentación, lo que la convierte en un recurso esencial para la ciencia de datos reproducible y la investigación colaborativa (Grolemund & Wickham, 2017; The Turing Way Community, 2023).

En el contexto de proyectos de R, Git y GitHub permiten mantener un registro ordenado de los scripts, datos y resultados, facilitando la colaboración y la reproducibilidad del análisis. Estas herramientas son recomendadas desde las etapas iniciales de cualquier proyecto, ya que su adopción temprana contribuye a la integridad y transparencia del trabajo científico (Bryan, 2018).

17.3 Publicación y sincronización de proyectos de R en GitHub

La publicación de un proyecto de R en GitHub implica la creación de un repositorio en la plataforma y su sincronización con la carpeta local del proyecto. Este proceso puede realizarse tanto desde la interfaz gráfica de RStudio como mediante la línea de comandos, y es recomendable implementarlo desde el inicio del proyecto para garantizar la trazabilidad y la colaboración efectiva (Bryan, 2018).

17.3.1 Pasos para publicar un proyecto de R en GitHub

Antes de comenzar a utilizar Git y GitHub, es fundamental tener Git instalado en el ordenador. Git es el sistema de control de versiones que permite gestionar los cambios en los archivos del proyecto y sincronizarlos con el repositorio remoto en GitHub.

Para descargar e instalar Git, se puede acceder a la página oficial de Git (https://git-scm.com/downloads) y seguir las instrucciones correspondientes al sistema operativo utilizado (Windows, macOS o Linux). Una vez instalado, Git estará disponible para ser utilizado desde la línea de comandos o a través de la interfaz de RStudio (Bryan, 2018).

  1. Creación de una cuenta y repositorio en GitHub: El primer paso consiste en crear una cuenta personal en GitHub. Una vez registrado, se debe crear un nuevo repositorio, asignándole un nombre descriptivo y, opcionalmente, una breve descripción. Es posible elegir entre un repositorio público o privado, según las necesidades del proyecto.

  2. Configurar el nombre de usuario en Git: En la terminal, se debe establecer el nombre de usuario global con el siguiente comando:

    git config --global user.name "nombre"

    Esto permite que Git asocie los cambios realizados con el usuario correspondiente (Bryan, 2018).

  3. Configurar el correo electrónico en Git: También en la terminal, se debe definir el correo electrónico global con el comando:

    git config --global user.email "correo"

    Este correo debe coincidir con el registrado en GitHub para asegurar la correcta vinculación de los commits (Bryan, 2018).

  4. Inicialización de Git en la carpeta local del proyecto: En la computadora local, se debe ubicar la carpeta del proyecto de R (que contiene el archivo .Rproj, los datos, los scripts y los resultados exportados). En RStudio, se activa el control de versiones desde el menú “Tools > Project Options > Git/SVN”, seleccionando Git. Alternativamente, en la terminal, se ejecuta el comando:

    git init

    Esto crea una carpeta oculta llamada .git que permitirá a Git rastrear los cambios en los archivos del proyecto.

  5. Conexión del repositorio local con el repositorio remoto en GitHub: Para vincular la carpeta local con el repositorio creado en GitHub, se debe copiar la URL del repositorio (por ejemplo, https://github.com/usuario/repositorio.git) y ejecutar el siguiente comando en la terminal:

    git remote add origin https://github.com/usuario/repositorio.git
  6. Agregado y confirmación de archivos: Se agregan los archivos del proyecto al control de versiones con el comando:

    git add .

    El punto (.) indica que se agregarán todos los archivos de la carpeta.

  7. Comentar los cambios realizados al código: Se realiza el primer registro de cambios (commit) con un mensaje descriptivo:

    git commit -m "Primer commit: subida inicial del proyecto"
  8. Crear la rama principal “main”: Para asegurarse de que la rama principal se llame “main”, se ejecuta:

    git branch -M main

    Esto es importante para mantener la compatibilidad con la configuración estándar de GitHub (Grolemund & Wickham, 2017).

  9. Subida de archivos al repositorio remoto: Finalmente, los archivos se suben al repositorio remoto con el comando:

    git push -u origin main

    Una vez completados estos pasos, el proyecto estará disponible en GitHub, permitiendo su consulta, descarga y colaboración (Bryan, 2018; Grolemund & Wickham, 2017). Cabe resaltar que los pasos 2 y 3 únicamente se realizan la primera vez que se configura git en una computadora o si se desea cambiar de usuario en un dispositivo.

17.4 Modificación, seguimiento y colaboración en proyectos de GitHub

Una vez que el proyecto está alojado en GitHub, es posible continuar su desarrollo y mantener un registro detallado de todas las modificaciones. El flujo de trabajo básico consiste en realizar cambios en los archivos del proyecto, registrar estos cambios mediante commits con mensajes claros y específicos, y sincronizarlos con el repositorio remoto utilizando el comando git push (Bryan, 2018). A continuación se datalla este proceso:

17.4.1 Modificación, seguimiento y colaboración en proyectos de GitHub

  1. Sincronización con el repositorio remoto: Antes de realizar cualquier cambio en el proyecto, se recomienda actualizar la copia local del repositorio para asegurarse de trabajar con la versión más reciente. Esto se logra ejecutando el siguiente comando en la terminal:

    git pull

    Este comando descarga y fusiona los cambios realizados por otros colaboradores en el repositorio remoto, evitando conflictos y asegurando la coherencia del trabajo (Bryan, 2018).

  2. Realización de cambios en los archivos del proyecto: Una vez sincronizado el repositorio local, se pueden modificar, agregar o eliminar archivos según las necesidades del proyecto. Estas modificaciones pueden incluir la edición de scripts, la incorporación de nuevos datos o la actualización de documentación.

  3. Preparación de los archivos modificados para el seguimiento: Tras realizar los cambios, es necesario agregar los archivos modificados al área de preparación (staging area) mediante el comando:

    git add .

    El punto (.) indica que se incluirán todos los archivos modificados, nuevos o eliminados en el próximo commit.

  4. Registro de los cambios realizados: Para documentar las modificaciones, se debe crear un commit con un mensaje claro y descriptivo que explique la naturaleza de los cambios. Esto se realiza con el comando:

    git commit -m "Mensaje descriptivo de los cambios realizados"

    La claridad y especificidad en los mensajes de commit facilitan la revisión y el seguimiento del historial del proyecto (Bryan, 2018).

  5. Sincronización de los cambios con el repositorio remoto: Finalmente, para compartir los cambios con otros colaboradores y mantener actualizado el repositorio en línea, se utiliza el comando:

    git push

    Este comando sube los commits locales al repositorio remoto en GitHub, permitiendo la colaboración y el respaldo continuo del proyecto.

El uso sistemático de este flujo de trabajo garantiza que el proyecto esté siempre respaldado, documentado y disponible para la colaboración, promoviendo la transparencia y la reproducibilidad en el desarrollo científico y profesional (Gentleman & Temple Lang, 2007; National Academies of Sciences, Engineering, and Medicine, 2019; The Turing Way Community, 2023).

17.5 Importación y reutilización de repositorios de GitHub

La importación de repositorios de GitHub, conocida como “clonación”, permite descargar una copia completa de un proyecto para trabajar localmente, modificarlo o adaptarlo a nuevas necesidades. Este procedimiento es útil tanto para uso personal como para la colaboración en proyectos de otros usuarios (Bryan, 2018).

17.5.1 Pasos para clonar un repositorio

  1. Obtener la URL del repositorio: Se debe acceder a la página del proyecto en GitHub y copiar la URL del repositorio, esta se encuentra disponible mediante el botón “Code”.

  2. Ejecutar el comando de clonación: En la terminal de RStudio, se debe utilizar el siguiente comando, reemplazando la URL por la correspondiente al repositorio de interés:

    git clone https://github.com/usuario/analisis_estadistico.git

    Este comando crea una carpeta local que contiene todos los archivos del proyecto, así como su historial completo de versiones.

17.5.2 Trabajo local y sincronización de cambios

Una vez clonado el repositorio, es posible modificar los archivos, ejecutar scripts, agregar nuevos datos o exportar resultados. Si se dispone de los permisos necesarios (por ejemplo, en proyectos propios o en los que se tiene acceso de escritura), los cambios realizados pueden sincronizarse con el repositorio remoto utilizando los comandos git add, git commit y git push. En caso de no contar con permisos de escritura, los cambios pueden mantenerse localmente o bien proponer modificaciones a través de un “pull request”.

17.5.3 Beneficios de la reutilización de repositorios

La clonación de repositorios facilita la reutilización de análisis y metodologías existentes, fomenta el aprendizaje a partir de proyectos desarrollados por otros usuarios y promueve la colaboración en equipo. Además, este proceso asegura la trazabilidad y la integridad del trabajo, ya que todo el historial de cambios queda registrado y disponible para su consulta y auditoría (Bryan, 2018; The Turing Way Community, 2023).

17.6 Recursos adicionales para el aprendizaje continuo

Para quienes deseen profundizar en el uso de Git y GitHub en el contexto de R y la ciencia de datos, se recomienda consultar los siguientes recursos:

  1. Libro recomendado: Happy Git and GitHub for the useR” de Jenny Bryan (2018) es una guía completa y accesible, disponible de forma gratuita en línea, que cubre desde los conceptos básicos del control de versiones hasta técnicas avanzadas de colaboración y gestión de proyectos en GitHub. El libro está orientado específicamente a usuarios de R y ofrece ejemplos prácticos y actualizados para el análisis estadístico y la ciencia de datos (Bryan, 2018).

  2. Manual colaborativo: The Turing Way (The Turing Way Community, 2023) es un manual colaborativo que aborda la reproducibilidad, la ética y la colaboración en la investigación científica. Este recurso proporciona información detallada sobre el uso de Git y GitHub en proyectos de ciencia abierta, con énfasis en las buenas prácticas y la gestión de datos.

Ambos recursos constituyen una base sólida para el aprendizaje continuo y la aplicación efectiva de Git y GitHub en proyectos de R, contribuyendo a la mejora de la reproducibilidad, la transparencia y la colaboración en la investigación científica (Gentleman & Temple Lang, 2007; National Academies of Sciences, Engineering, and Medicine, 2019).