install.packages("usethis")
library("usethis")
use_git_config(user.name = ”Jane Doe”, user.email = ”jane@example.org”)
Git y GitHub
Curso R AEET 2025
¿Por qué resulta útil el control de versiones?
Nos evitan:
- Sobreescribir archivos
- Múltiples versiones finales
- Trabajar por error en versiones no finales
- Creación de copias “en conflicto” cuando dos personas trabajan a la vez
- Ediciones sin control de cambios
Nos permiten:
- Sabers quién ha hecho qué y cuándo
- Llevar un registro de todos los cambios
- Deshacer cambios
- Facilitan la colaboración
- Ediciones sin control de cambios
¿Qué es Git?
Git es un sistema de control de versiones distribuido. Nos permite el seguimiento de cambios en nuestros archivos, colaborar con otras personas y manejar nuestros proyectos de forma más eficiente.
Características clave de Git:
- Local: Funciona completamente en tu máquina, no requiere internet para la mayoría de las operaciones.
- Distribuido: Cada usuario tiene su propio repositorio completo en su máquina, con todo el historial del proyecto y no depende de un servidor central para realizar muchas de las tareas (a diferencia de otros sistema de control).
- Línea de comandos: Git se usa principalmente a través de comandos en la terminal o consola.
¿Qué es GitHub?
GitHub es una plataforma basada en Git para el alojamiento de proyectos o repositorios, que facilita la colaboración entre personas y ofrece herramientas adicionales como pull requests, issues o acciones automatizadas, entre otras.
Características clave de GitHub:
- Remoto: Requiere internet para acceder a los repositorios almacenados en la nube.
- Interfaz gráfica: Proporciona una interfaz gráfica para visualizar y gestionar proyectos. Además existen apps de escritorio.
- Herramientas para equipos de personas: por ejemplo, revisión de código (pull requests), tareas y seguimiento de errores (issues), integración y automatización de procesos (GitHub Actions).
Excuse me, do you have a moment to talk about version control? - Jennifer Bryan
Instalación y Configuración Inicial
Git se puede operar a través de la terminal (más difícil), a través de Rstudio o a través de la aplicacion “GitHub desktop” (más fácil).
Lo primero es hacerse una cuenta en GitHub!
1. Crear una cuenta en GitHub
Consejos para nombre de usuario
2. Asegurar que R y Rstudio están instalados
Y actualizados!
3a. GitHub Desktop App
Descarga de GitHub Desktop - https://desktop.github.com/download/
Este programa nos instalará Git automáticamente.
3b. GitHub en Rstudio
Para usar Git desde Rstudio hay que (1) instalar Git, (2) hacer que Git local hable con GitHub y (3) asegurarse de que RStudio puede hablar con Git local (y, por tanto, con GitHub). Esto se hará una única vez (por ordernardor).
Guía completa: https://happygitwithr.com
3b.1 Instalación de Git
Primero asegurarse que Git no está ya instalado en nuestro ordenador (en la terminal: which git
y git --version
y git config --list
)
https://happygitwithr.com/install-git - Instrucciones de instalación en diferentes sistemas operativos
https://happygitwithr.com/troubleshooting.html - Resolución de problemas durante la instalación
3b.2. Hacer que Git local hable con GitHub
3b.3. Crear y guardar Personal Access Token (PAT)
::create_github_token() usethis
Esto abrirá una ventana en la web de GitHub - Hacer click en ‘Generate token’ (bton verde).
Pegar y guardar el PAT:
# install.packages("gitcreds")
# library("gitcreds")
::gitcreds_set() gitcreds
Introducción a GitHub
Perfil e interfaz de GitHub
¿Qué es un repositorio?
Un repositorio es un “contenedor” donde desarrollar un proyecto.
Figure: (Braga et al. 2023)
Un repositorio tiene numerosos apartados:
- Code - contenido del proyecto
- Issues - crear y gestionar problemas o tareas
- Pull requests
- Discusions
- Actions
- Project - tareas y manejo de proyectos
- Wiki - espacio para documentar proyecto
- Security
- Insights - estadísticas del proyecto
- Settings - configuración
- Watch/Fork/Star
- Commit history
- Contributors
… y más
Flujo de Trabajo Básico con GitHub
Crear un repositorio en GitHub
Clonar un repositorio
Hacer cambios (nuevo fichero) y sincronizar
commit
Subir cambios al repositorio remoto
git push
Abrir issue en GitHub (e.g. nuevo plot)
Hacer cambios en R y sincronizar de nuevo (
commit
ygit push
)Ver cambios en fichero
diff
Hacer cambios en GitHub (e.g. README.md)
Descargar cambios del remoto
git pull
Ver commit history del repositorio
Colaboración en GitHub
Se puede pensar en el historial de un proyecto como una linea del tiempo de la que podemos generar ramas que trabajen en paralelo y que se pueden unir a la principal.
Image source: https://medium.com/@jacoblogan98/understanding-git-branching-5d01f3dda541
Fork y Pull Request
Hacer un fork
es un modo de hacer una copia de un repositorio en tu cuenta para hacer cambios sin afectar el repositorio original. Un fork crea una rama o branch
en la que poder trabajar en paralelo a la rama principal.
Una vez estamos seguros que nuestros cambios se pueden unir a la rama principal (master o main
) hacemos un pull request
- es una solicitud para que los propietarios del repositorio revisen y acepten los cambios.
Trabajar en diferentes ramas (branches) puede facilitar la colaboración y evitar conflictos en la rama principal.
Image source: https://build5nines.com/introduction-to-git-version-control-workflow/
Resolución de conflictos - Merge conflicts
Git puede encontrar conflictos al intentar fusionar ramas que hay que arreglar manualmente. Esto sucede cuando ambas ramas han modificado las mismas líneas de un archivo - aparece un mensaje: “Can’t automatically merge”.
En estos casos, es necesario crear el pull request y resolver el conflicto “Resolve conflicts”.
Los merge conflicts tambien pueden aparecen en la misma rama entre dos usuarios cuando se edita un archivo en local que ha sido modificado en remoto y no se ha hecho un pull primero. Git detectará un conflicto al ver cambios en las mismas lineas de un archivo. Por eso es importante hace pull antes de empezar a trabajar.
Git muestra dónde están los conflictos así:
<<<<<<código del main=======código de la rama a unir>>>>>>
Para resolverlo, debes elegir si conservar los cambios de la rama principal, los de la rama que deseas fusionar, o combinar ambos según sea necesario. Una vez realizada esta selección, Git permitirá completar la fusión creando un nuevo commit que integre ambas ramas.
Buenas prácticas para trabajar en GitHub
- Mantener repositorio ordenado (estructura clara y un archivo README.md)
- Commits informativos (no sólo “update”)
- Mensajes de commit claros y cortos
- Hacer commits pequeños y frecuentes - evitar cambios grandes en un solo commit
- Uso de .gitignore - ignorar archivos no deseados o muy pesados: e.g. “archivo.log”
- Uso de issues para:
- dudas
- dejar reflejadas decisiones importantes
- peticiones a otro miembros
- tareas pendientes
- Los issues se pueden etiquetar por temas (
labels
) y asignar a miembros (assignees
) - Colaboración en ramas cuando se trabaja en el mismo documento o si los cambios necesitan revisión
Recursos Adicionales
Documentación oficial de Git: https://git-scm.com/doc
Documentación oficial de GitHub: https://docs.github.com
Tutorial interactivo: https://learngitbranching.js.org/
Beneficios extra con cuenta de GitHub Education - https://education.github.com/
Manuscritos sobre Git y GitHub:
Este documento está basado en:
intro_git-github - Julen Astigarraga y Verónica Cruz https://github.com/DatSciR/intro_git-github
github-workshop - Developing efficient workflows with git & GitHub - Paco Rodríguez https://github.com/Pakillo/github-workshop