Git & GitHub

Álex Espinosa-Correa

Grupo de Estudios Botánicos GEOBOTA, Universidad de Antioquia

Una historia conocida… y sufrida

Una revisión «normal» de un documento. PHD Comics.

Historial de versiones en Google Docs

Control de versiones

Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. […] en realidad puedes hacer lo mismo con casi cualquier tipo de archivo que encuentres en una computadora. Chacon (2014)

Un método básico y rudimentario del control de versiones es terner copias de un mismo archivo.

2015-11-09_package-installation.R
2016-05-21_package-installation.R
2017-09-05_package-installation.R
2018-06-29_package-installation.R

Se comienza con una versión básica y se van guardando sólo los cambios. Gonzalez et al. (2019).

Sistemas de control de versiones

Locales

Contiene una simple base de datos, en la que se lleva el registro de todos los cambios realizados a los archivos.

Centralizados

Tienen un único servidor que contiene todos los archivos versionados y varios clientes que descargan los archivos desde ese lugar central.

Distribuidos

Los clientes no solo descargan la última copia instantánea de los archivos, sino que se replica completamente el repositorio.

Git

Como muchas de las grandes cosas en esta vida, Git comenzó con un poco de destrucción creativa y una gran polémica. Chacon (2014).

Git es un sistema de control de versiones distribuido gratuito y de código abierto diseñado para manejar todo, desde proyectos pequeños hasta proyectos muy grandes con velocidad y eficiencia.

Linus Torvalds. Krd, CC BY-SA 3.0, via Wikimedia Commons

Por qué Git

Las ventajas de Git solo superan las desventajas cuando consideras la sobrecarga de trabajar con otras personas, incluyendo tu yo futuro. ¿Y quién entre nosotros no necesita hacer eso? En un flujo de trabajo basado en Git, documentas y, opcionalmente, expones tu trabajo a medida que avanzas. La comunicación y la colaboración son las aplicaciones estrella del control de versiones. El modelo de gestión de archivos de Git puede sentirse incómodamente rígido, pero permite la distribución de archivos entre diferentes personas, computadoras y tiempo. Bryan (2018).

Probablmente un mundo mejor. Lennart Wittkuhn.

GitHub

GitHub es el mayor proveedor de alojamiento de repositorios Git, y es el punto de encuentro para que millones de desarrolladores colaboren en el desarrollo de sus proyectos. Un gran porcentaje de los repositorios Git se almacenan en GitHub, y muchos proyectos de código abierto lo utilizan para hospedar su Git, realizar su seguimiento de fallos, hacer revisiones de código y otras cosas. Chacon (2014).

Incluso para proyectos individuales privados, es una buena idea subir tu trabajo a una ubicación remota para tener tranquilidad. ¿Por qué? Porque es bastante fácil estropear tu repositorio local de Git, especialmente cuando eres nuevo en esto. La buena noticia es que a menudo solo la infraestructura de Git está estropeada. ¡Tus archivos están bien! Bryan (2018).

The Octocat, la mascota de GitHub.

Git y GitHub en RStudio

RStudio ofrece integración con Git y GitHub permitiendo un flujo de trabajo continuo desde el mismo IDE.

Pasos para sincronizar el repositorio desde RStudio.

Referencias

Bryan, Jennifer. 2018. «Excuse Me, Do You Have a Moment to Talk about Version Control?» The American Statistician 72 (1): 20-27. https://doi.org/10.1080/00031305.2017.1399928.
Chacon, Scott. 2014. Pro Git. 2.ª ed. The expert’s voice en programa development. New York, NY: Apress. https://git-scm.com/book/en/v2.
Gonzalez, Ivan, Daisie Huang, Nima Hejazi, Katherine Koziar, y Madicken Munk. 2019. «Version Control with Git: Summary and Setup». https://swcarpentry.github.io/git-novice/index.html.