Control de Versiones con Git y GitHub

Ciclo de Gestión del Dato: Ecoinformática
Máster Universitario en Conservación, Gestión y Restauración de la Biodiversidad

Antonio J. Pérez-Luque

Curso 2022-2023

phdcomic

phdcomic

¿Qué es el control de versiones?

El control de versiones es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que podamos recuperar versiones específicas más adelante

  • Se puede utilizar sobre cualquier archivo.
  • Permite:
    • Revertir archivos (proyecto) a un estado anterior
    • Comparar cambios a lo largo del tiempo
  • Facilita la identificación de errores

Registro de cambios

Registro de cambios (varios usuarios)

Integración de cambios

Sistemas para el control de versiones


Git

  • Sistema avanzado de control de versiones distribuido
  • Permite rastrear el progreso de un proyecto mediante capturas
    • ¿Qué cambios?
    • ¿Dónde?
    • ¿Quién los hizo?
    • ¿Por qué?

Devon Wijesinghe

GitHub

  • Un website donde alojar repositorios
  • Interfaz para explorar repositorios
  • Permite colaborar de una forma más eficaz:
    • Compartir repositorio
    • Ver cambios
    • Corregir errores
    • Discutir y Revisar cambios

Recursos sobre Git

Ciclo de Git

Artwork by Allison_horst

Ciclo de Git

T. Meralus

Instalar Git

Configurar Git

git config --global user.name 
git config --global user.email 
git config --global "Fulanito Menganito"
git config --global "micorreo@gmail.com"

Note

Vamos a usar Github, por tanto la dirección de correo que indiques ha de ser la misma con la que te registres en GitHub.

  • En cualquier momento podemos ver las opciones de configuración
git config --list

Crear un repositorio nuevo

mkdir <nombre_directorio>


mkdir datos
cd datos

Iniciar un repositorio

  • Para iniciar un repositorio utilizamos el comando
git init nombrerepositorio


git init mi_primer_repositorio

Note

¿Que ha ocurrido en nuestro directorio?

  • Inspeccionar el directorio
cd mi_primer_repositorio
ls -a 
cd .git

Añadir cambios

  • Crea un archivo de texto dentro del directorio, escribe algo y nómbralo miarchivo.txt

  • Añade el archivo a la staging area

git add <nombre_archivo>
git add miarchivo.txt
  • Si quiero añadir todos los archivos
git add . 

Registrar cambios

git commit -m "Commit message""

Important

El mensaje nos servirá para indicar lo que hemos hecho.

git commit -m "Escribo mis datos personales en archivo"


[master (root-commit) 71fe224] Escribo mis datos personales en archivo
 1 file changed, 2 insertions(+)
 create mode 100644 miarchivo.txt

T. Meralus

Enviar cambios a Repositorios Remotos

  • Nuestros cambios están en el HEAD (copia local)
  • Queremos enviar los cambios a un repositorio remoto

Danger

Necesitamos un repositorio remoto (GitHub):

  • Crear
  • Clonar
git remote add origin <url server>

git remote add origin https://github.com/ajpelu/teach_git_ejemplo.git

Crear repositorio en GitHub

Enlazar repositorio local y remoto


URL:
https://github.com/ajpelu/teach_git_ejemplo.git


git remote add origin <url server>
git remote add origin https://github.com/ajpelu/teach_git_ejemplo.git

Enviar

  • Para enviar cambios (una vez conectados) a un repositorio remoto
  • Nos pedirá usuario y contraseña
git push origin master

Warning

git push origin
git push origin master

¿Qué rama queremos sincronizar?

Clonar un repositorio

Clonar un repositorio

  • Importante para reproducibilidad
  • Colaboración
  • Repositorio remoto (GitHub)
  • 2 formas (diferencias)
# git clone <url> 
git clone https://github.com/ajpelu/teach_git_ejemplo.git 
# git clone username@host:/path/to/repository
git clone git@github.com:ajpelu/teach_git_ejemplo.git 

Actualizar un repositorio local

Allison_horst

Actualizar un repositorio local

¿Existe alguna información nueva en mi repositorio remoto?

git fetch  

¿Existe alguna información nueva en mi repositorio remoto y quiero que esté en mi repositorio local?

git pull  

Warning

  • Prestar atención a la rama!!
git pull origin master 

Otros comandos

Práctica 2.1.
Control de Versiones

Pasos

  1. Instalar Git en tu ordenador
  2. Crear un repositorio llamado ecoinf_nombre
ecoinf_antonioperez
  1. Escribe un documento de texto
  2. Realiza varios cambios en el documento
  3. Haz un control de versiones
  4. Crea un repositorio en GitHub
  5. Conecta ambos repositorios y sincronizalos

Entrega: url del repositorio creado

Práctica 2.2.
Documento Reproducible + Control de versiones

Pasos

  1. Crea un documento reproducible con .Rmd y exportalo en el formato que mas te guste (pdf, word, etc.)
  2. Realiza cambios en el documento:
  • Personaliza con el encabezado YAML
  • Incluye texto
  • Modifica el código
  1. Registra los cambios en el documento mediante el control de versiones
  2. Usa el repositorio de la práctica anterior

Entrega: url del repositorio creado

Práctica 2.3.
Control de Versiones (Colaboración)

Pasos

  1. Crea un fork del repositorio https://github.com/ajpelu/teach_git_ejemplo
  2. Clona el repositorio en tu equipo para tener una copia local
  3. Escribe algo en el documento miarchivo.txt (además de tu nombre y tus apellidos, algo original: un poema, una canción, un refrán, un mensaje, … )
  4. Registra los cambios y haz un control de versiones
  5. Sincroniza con tu repositorio remoto
  6. Haz un pull request

Tip

Si tienes alguna duda consulta puedes leer este tutorial

Entrega: no es necesario, me llegarán los pull requests de cada uno