1 of 30

Git / GitHub Workshop

John Suárez-Pérez

2 of 30

Cronograma

Introducción a Git y GitHub

Sesión 1: Introducción a Git y Control de Versiones.

Sesión 2: Trabajo con Git, Ramas y Fusiones en Git

Sesión 3: GitHub y Colaboración en Proyectos

Sesión 4: Proyecto Práctico y Buenas Prácticas

Introducción al diseño y desarrollo de páginas web con GitHub

Sesión 5: Fundamentos del Desarrollo Web Estático con Jekyll y Markdown

Sesión 6: Desarrollo Web Estático Avanzado con Jekyll y GitHub Pages

3 of 30

Sesión 1: Introducción a Git y Control de Versiones.

4 of 30

Objetivo

Comprender los conceptos fundamentales alrededor del control de versiones y por qué son importantes.

5 of 30

Contenido

- ¿Qué es el control de versiones?

- Ventajas del control de versiones.

- Introducción a Git.

- Instalación y configuración de Git.

- Creación de un primer repositorio Git.

6 of 30

¿Qué es el control de versiones?

7 of 30

Contexto

Image from: https://phdcomics.com/comics/archive.php?comicid=1531

8 of 30

Sistema de Control de Versiones

Un sistema de control de versiones (VCS, por sus siglas en inglés) es una herramienta que registra los cambios realizados en un conjunto de archivos a lo largo del tiempo.

Su objetivo principal es permitir a los desarrolladores colaborar en proyectos de software, facilitando el seguimiento de las modificaciones, la gestión de versiones y la coordinación de trabajo en equipo.

Image from: https://git-scm.com/

9 of 30

Sistema de Control de Versiones

Los VCS mantienen un historial de cambios, lo que facilita la recuperación de versiones anteriores, la identificación de quién realizó cada modificación y la resolución de conflictos en caso de cambios simultáneos.

Además, estos sistemas permiten ramificar el desarrollo, lo que posibilita trabajar en nuevas características o correcciones de errores sin afectar la rama principal del proyecto hasta que estén listas para ser fusionadas.

Image from: https://git-scm.com/

10 of 30

Sistema de Control de Versiones

Los sistemas de control de versiones más populares son Git, Mercurial y Subversion.

11 of 30

Ventajas del control de versiones.

12 of 30

Ventajas

Historial de cambios:

El control de versiones mantiene un historial detallado de todos los cambios realizados en el código fuente y otros archivos. Esto permite rastrear la evolución del proyecto a lo largo del tiempo y revertir a versiones anteriores si es necesario.

Colaboración efectiva:

Facilita la colaboración entre desarrolladores, ya que múltiples personas pueden trabajar en el mismo proyecto simultáneamente. Cada desarrollador puede realizar cambios en su rama y luego fusionar esos cambios de manera controlada.

13 of 30

Ventajas

Reversión y recuperación:

Permite revertir a versiones anteriores en caso de errores o problemas. Esto es esencial para corregir rápidamente errores sin perder el progreso general del proyecto.

Gestión de conflictos:

Proporciona herramientas para gestionar y resolver conflictos que pueden surgir cuando varios desarrolladores realizan cambios en las mismas partes del código. Esto evita la pérdida de datos y garantiza la coherencia del código.

14 of 30

Ventajas

Ramificación (branching):

Permite la creación de ramas independientes para trabajar en nuevas características o correcciones de errores sin afectar la rama principal. Esto facilita el desarrollo paralelo y la integración controlada de cambios.

Facilita la auditoría:

Proporciona un registro detallado de quién hizo qué cambios y cuándo. Esto facilita las auditorías, la identificación de responsabilidades y la resolución de problemas.

15 of 30

Ventajas

Experimentación segura:

Los desarrolladores pueden experimentar en sus propias ramas sin afectar el código principal. Esto fomenta la innovación y la prueba de nuevas características sin comprometer la estabilidad del proyecto.

Soporte para trabajo remoto:

Facilita el trabajo en equipos distribuidos, ya que los repositorios pueden almacenarse en servidores remotos. Esto es esencial para equipos que trabajan en ubicaciones geográficas diferentes.

16 of 30

Ventajas

Facilita la integración continua:

Se integra fácilmente con prácticas como la integración continua, lo que permite realizar pruebas y análisis automáticos cada vez que se realizan cambios en el código.

Seguimiento de problemas:

Al vincular cambios específicos con problemas o tareas, facilita el seguimiento y la gestión de problemas a lo largo del ciclo de vida del desarrollo.

17 of 30

Introducción a Git.

18 of 30

Git

Git es un sistema de control de versiones distribuido ampliamente utilizado en el desarrollo de software.

Creado por Linus Torvalds en 2005 originalmente para el desarrollo del kernel de Linux.

19 of 30

Conceptos clave

Control de Versiones Distribuido:

Git es un sistema distribuido, lo que significa que cada desarrollador tiene una copia completa del historial del proyecto en su máquina local. Esto facilita el trabajo sin conexión y mejora la resiliencia ante fallas.

Repositorio:

Un repositorio Git es un almacén de datos que contiene el historial completo del proyecto, así como la información sobre las ramas, etiquetas y configuraciones. Puede estar ubicado localmente en la máquina de un desarrollador o de forma remota en un servidor.

Image from: https://git-scm.com/

20 of 30

Conceptos clave

Commit:

Un commit en Git representa un conjunto de cambios realizados en el código. Cada commit tiene un mensaje descriptivo que explica los cambios realizados. Los commits son la unidad básica de seguimiento y versionado en Git.

Branch (Rama):

Las ramas permiten a los desarrolladores trabajar en paralelo en diferentes características o correcciones de errores sin afectar la rama principal (generalmente llamada "master" o "main"). Esto facilita el desarrollo concurrente y la gestión de características aisladas.

Image from: https://git-scm.com/

21 of 30

Conceptos clave

Merge (Fusión):

El proceso de combinar los cambios de una rama a otra se llama fusión. Git realiza la fusión de manera inteligente, pero en algunos casos puede haber conflictos que deben resolverse manualmente.

Pull Request:

En entornos colaborativos, los desarrolladores proponen cambios a la rama principal a través de pull requests (solicitudes de extracción). Esto permite revisar y discutir los cambios antes de fusionarlos en la rama principal.

Image from: https://git-scm.com/

22 of 30

Conceptos clave

Clone:

Clonar un repositorio Git significa crear una copia local del repositorio remoto. Esto es común al iniciar el desarrollo en un nuevo proyecto o cuando se colabora con un equipo existente.

Push y Pull:

"Push" se refiere a enviar los cambios locales a un repositorio remoto, mientras que "pull" implica obtener los cambios más recientes del repositorio remoto y fusionarlos en la rama local.

Image from: https://www.junosnotes.com/git/how-to-clone-a-git-repository/

23 of 30

Instalación y Configuración de Git.

24 of 30

Instalación

25 of 30

Primeros Pasos

git config --global user.email “you@example.com

git config --global user.name “Your Name

git config --global init.defaultBranch main

git config --global –list

26 of 30

Creación de un primer repositorio Git.

27 of 30

Ejercicio

1) Crear un repositorio con git

2) Crear un archivo llamado test.py

3) Ver la historia del proyecto

28 of 30

Resumen

29 of 30

Resumen

  1. ¿Qué es un sistema de control de versiones?
  2. Ventajas de un sistema de control de versiones.
  3. Introducción a Git.
  4. Instalación y configuración de Git.
  5. Creación de un primer repositorio Git.

30 of 30

¡Gracias!

John Suárez-Pérez�https://jsuarez314.gitlab.io