Git / GitHub Workshop
John Suárez-Pérez
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
Sesión 1: Introducción a Git y Control de Versiones.
Objetivo
Comprender los conceptos fundamentales alrededor del control de versiones y por qué son importantes.
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.
¿Qué es el control de versiones?
Contexto
Image from: https://phdcomics.com/comics/archive.php?comicid=1531
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/
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/
Sistema de Control de Versiones
Los sistemas de control de versiones más populares son Git, Mercurial y Subversion.
Ventajas del control de versiones.
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.
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.
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.
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.
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.
Introducción a Git.
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.
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/
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/
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/
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/
Instalación y Configuración de Git.
Instalación
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
Creación de un primer repositorio Git.
Ejercicio
1) Crear un repositorio con git
2) Crear un archivo llamado test.py
3) Ver la historia del proyecto
Resumen
Resumen
¡Gracias!
John Suárez-Pérez�https://jsuarez314.gitlab.io