6 Git - sistema de control de versiones
En este capítulo se introduce el sistema de control de versiones Git, el cual permite llevar un control de los cambios que se realizan en diversos tipos de archivos, incluyendo los que se efectúan en el código fuente durante el proceso de desarrollo de software.
6.1 Resumen
Un sistema de control de versiones es una herramienta que ayuda a gestionar y registrar todos los cambios realizados en los archivos de un proyecto a lo largo del tiempo. De esta manera, se puede llevar un historial de modificaciones y, si es necesario, regresar a versiones anteriores, comparar diferentes etapas o ramas del proyecto y coordinar el trabajo de múltiples colaboradores.
Git es un sistema de control de versiones muy popular que trabaja en forma distribuida. Cada colaborador posee una copia completa del repositorio del proyecto (conteniendo todas las versiones de los archivos) en su propia computadora. Gracias a esta arquitectura distribuida, cada colaborador puede trabajar de forma “desconectada” (ej. sin conexión a una red local o a Internet) y sincronizar sus archivos con un repositorio remoto mediante las operaciones push (para “subir” archivos) y pull (para “bajar” archivos).
6.2 Trabajo previo
6.2.1 Instalación de software
Instale en su computadora el sistema Git
6.2.2 Tutoriales
Abba, Ihechikara Vincent (2021). Git and GitHub Tutorial – Version Control for Beginners. freeCodeCamp.Org. https://www.freecodecamp.org/news/git-and-github-for-beginners/
6.3 Introducción
Git es un sistema de control de versiones diseñado para “rastrear” cambios en el código fuente durante el proceso de desarrollo de software. Sin embargo, puede ser utilizado para llevar el control de los cambios en cualquier conjunto de archivos (ej. documentación, música).
Un sistema de control de versiones proporciona, entre otras ventajas:
- La capacidad de recuperar versiones anteriores de los archivos.
- La capacidad de integrar modificaciones efectuadas por varias personas en el mismo conjunto de archivos.
- La capacidad de mantener varias “ramas” (branches) de un producto (ej. “estable”, “evaluación”, “inestable”, como en el caso de Debian Linux, GRASS GIS y muchos otros proyectos de software libre).
- Facilidades para mantener redundancia y respaldos de los archivos (ej. Programa de respaldos de GitHub). Esta es una facilidad que implementan algunos servicios en la nube.
Git fue diseñado por Linus Torvalds en 2005 durante del desarrollo del kernel del sistema operativo Linux. Se caracteriza por ser un sistema de control de versiones distribuido, lo que significa que el código fuente puede estar alojado en la estación de trabajo de cualquier miembro del equipo de desarrollo. No requiere un repositorio “central”, pero también puede trabajar de esa forma.
El protocolo de Git es utilizado en varios sitios que proveen servicios de alojamiento de software, entre los que están SourceForge, Bitbucket, GitLab y GitHub.
6.4 Operaciones de Git
Desde el punto de vista de un usuario de Git (ej. un programador), Git se utiliza para sincronizar la versión local (i.e. en una computadora personal) de un conjunto de archivos, llamado proyecto o repositorio, con la versión que está alojada en un sistema remoto (ej. GitHub). Cada repositorio se almacena en un directorio (carpeta) del sistema operativo. La sincronización se realiza principalmente a través de dos operaciones:
- push: para “subir” al repositorio remoto los cambios realizados en el repositorio local. Esta operación se realiza mediante el comando git push. Es probable que el sistema remoto le solicite al usuario algún tipo de autenticación (ej. nombre de usuario y clave).
- pull: para “bajar” al repositorio local los cambios realizados en el repositorio remoto. Esta operación se realiza mediante el comando git pull.
Las operaciones push y pull se ilustran en la Figura 6.1.
6.5 Ejercicios
En los siguientes pasos se practica el flujo de trabajo básico con Git y GitHub: bifurcar un repositorio existente, clonarlo a la computadora local, editar su contenido, enviar los cambios al repositorio remoto y publicarlos como un sitio web en GitHub Pages.
6.5.1 Bifurcación del repositorio en GitHub
Si aún no cuenta con una, cree una cuenta gratuita en GitHub. Complete el formulario de registro con una dirección de correo electrónico, un nombre de usuario y una contraseña, y verifique la cuenta mediante el correo de confirmación que GitHub le enviará.
Con la sesión iniciada en GitHub, visite la página del repositorio https://github.com/gf0604-procesamientodatosgeograficos/mundo-mascota. Este repositorio contiene un archivo
index.mdcon el catálogo de ejemplo de una tienda ficticia de artículos para mascotas llamada Mundo Mascota.En la parte superior derecha de la página del repositorio, haga clic en el botón Fork. En la pantalla Create a new fork, mantenga los valores por defecto (en Owner aparecerá su cuenta personal y en Repository name el nombre
mundo-mascota) y haga clic en Create fork. La operación fork (bifurcación) crea una copia del repositorio original en su cuenta personal, sobre la que puede realizar cambios libremente sin afectar al repositorio original, pero con la posibilidad de integrar cambios entre ambos repositorios.
6.5.2 Clonación del repositorio a la computadora local
- En RStudio, cree un nuevo proyecto con la opción File - New Project - Version Control - Git. En el campo Repository URL, pegue la URL del repositorio que bifurcó en el paso 3 (con el formato
https://github.com/<usuario>/mundo-mascota, donde<usuario>es su nombre de usuario en GitHub). El campo Project directory name se completará automáticamente conmundo-mascota. En Create project as subdirectory of, seleccione una ubicación en su computadora para almacenar el proyecto. Haga clic en Create Project; RStudio clonará el repositorio remoto a la ubicación seleccionada y abrirá automáticamente el nuevo proyecto. La operación clone (clonación) crea una copia completa del repositorio remoto en su computadora, incluyendo su historial de cambios. Para realizar esta operación, debe tener instalado el sistema Git en su computadora.
6.5.3 Edición, commit y push de los cambios
En el panel Files de RStudio, haga clic en el archivo
index.mdpara abrirlo en el editor. Realice cambios en su contenido para personalizarlo. Por ejemplo: agregue un nuevo artículo al catálogo, edite la información de contacto o modifique el título. Guarde los cambios con File - Save (o el atajoCtrl + Sen Windows/Linux,Cmd + Sen macOS).Con la sesión iniciada en GitHub, vaya a la página de su repositorio bifurcado (con el formato
https://github.com/<usuario>/mundo-mascota). Sobre la lista de archivos, haga clic en el botón Add file y seleccione Upload files. Arrastre el archivoindex.mddesde el directorio del proyecto en su computadora al área indicada en el navegador (o haga clic en choose your files para seleccionarlo). GitHub cargará la nueva versión del archivo y detectará automáticamente que reemplaza al archivo existente.Al final de la misma página se encuentra el formulario Commit changes. En el campo de texto superior, escriba un mensaje corto y descriptivo que resuma el cambio realizado (por ejemplo, “Agregar nuevo artículo al catálogo”). Un commit es una “captura” que registra un conjunto de cambios en el historial del repositorio en un momento determinado. El mensaje del commit es importante porque permite entender —al revisar el historial del proyecto, ya sea uno mismo o cualquier otra persona colaboradora— qué se modificó y por qué; por eso conviene que sea claro, específico y conciso. Haga clic en el botón Commit changes para confirmar el envío. Esta acción realiza dos operaciones en una sola: registra el commit en el historial del repositorio y ejecuta un push (envío) del cambio al repositorio remoto en GitHub. Verifique en la página del repositorio que los cambios se reflejen en el archivo
index.md.
6.5.4 Publicación en GitHub Pages
En la página del repositorio en GitHub, vaya a la pestaña Settings y seleccione Pages en el menú lateral izquierdo. En la sección Build and deployment, en Source, escoja Deploy from a branch. En Branch, seleccione
maincon la carpeta/ (root)y haga clic en Save.Espere uno o dos minutos y recargue la página Settings - Pages. Cuando el sitio esté publicado, aparecerá un mensaje con la URL pública, con el formato
https://<usuario>.github.io/mundo-mascota/, donde<usuario>es su nombre de usuario en GitHub. Haga clic en la URL para visitar el catálogo publicado.Para practicar el ciclo completo de trabajo con Git, repita los pasos 5 a 7: realice nuevas ediciones en el archivo
index.md, haga commit y push. Los cambios se reflejarán en el sitio de GitHub Pages pocos minutos después. Repita el ciclo de editar → commit → push hasta familiarizarse con el proceso.
6.6 Recursos de interés
Git. (s. f.). Recuperado 28 de agosto de 2022, de https://git-scm.com/
GitHub Archive Program. (s. f.). GitHub Archive Program. Recuperado 10 de abril de 2022, de https://archiveprogram.github.com/
Higgins, M. (s. f.). Reproducible Templates for Analysis and Dissemination. Coursera. Recuperado 11 de abril de 2022, de https://www.coursera.org/learn/reproducible-templates-analysis
Klavins, S. (2020). Version Control part 1. Medium. https://stevenklavins94.medium.com/version-control-part-1-c5f1b43127f6
