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 fig-git-push-pull.

6.5 Ejercicios

  1. En la interfaz de usuario de GitHub, realice un Fork (bifurcación) del repositorio https://github.com/gf0604-procesamientodatosgeograficos/2025-i-mundo-mascota a su cuenta personal. La operación fork es una copia de un repositorio a otra cuenta. Así, es posible modificar libremente el repositorio copiado, pero con la posibilidad de integrar cambios del repositorio original, o viceversa. El botón para realizar la operación fork se encuentra en la parte superior derecha de la interfaz de usuario de GitHub.

  2. Con la opción de menú de RStudio File - New Project - Version Control - Git, realice un clone (clonación) del repositorio que bifurcó en el paso 1 a su computadora local. La operación clone en Git (y GitHub) sirve para crear una copia completa de un repositorio que está alojado en línea, por ejemplo en GitHub, a una computadora local. Para realizar esta operación, debe haber instalado el sistema Git en su computadora.

  3. Realice cambios en el repositorio clonado, súbalos (push) a su repostorio en GitHub y publíquelos en un sitio en GitHub Pages, como en los ejercicios que realizó en el capítulo sobre Markdown.

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