Volver a los cursos
AI016 Professional

Tutorial de Git de Ry

Una guía completa sobre el control de versiones con Git, avanzando desde flujos de trabajo básicos como preparar y confirmar cambios hasta temas avanzados como rebase interactivo, colaboración remota y la estructura interna de la base de datos de objetos de Git.

4.9
39.0h
983 estudiantes
0 me gusta
Inteligencia Artificial
Comenzar a aprender

Descripción del curso

📚 Resumen del Contenido

Una guía completa sobre el control de versiones Git, que abarca desde flujos de trabajo básicos como la preparación y confirmación de cambios hasta temas avanzados como el rebase interactivo, la colaboración remota y la estructura interna de la base de datos de objetos de Git.

Domine el sistema de control de versiones más popular del mundo, desde los comandos hasta sus componentes internos.

Autor: Ryan Hodson

Agradecimientos: No se mencionan explícitamente en la portada.

🎯 Objetivos de Aprendizaje

  1. Comparar y contrastar los sistemas de control de versiones Local, Centralizado y Distribuido.
  2. Identificar las motivaciones históricas detrás de la creación de Git para el kernel de Linux.
  3. Realizar la configuración básica de Git, incluyendo la verificación de instalación, la inicialización de repositorios y el seguimiento de archivos.
  4. Inicializar un repositorio Git e identificar el papel del directorio .git.
  5. Configurar ajustes globales de usuario y seguir archivos del proyecto mediante el área de preparación (staging).
  6. Ejecutar confirmaciones para crear instantáneas del proyecto y revisarlas mediante el historial del repositorio.
  7. Navegar hacia commits históricos específicos usando sus IDs y regresar al estado actual del proyecto.
  8. Crear y gestionar etiquetas anotadas para identificar versiones estables de lanzamiento.
  9. Aplicar git revert para deshacer cambios específicos ya confirmados, manteniendo un historial transparente.
  10. Identificar, crear y cambiar entre ramas utilizando la CLI de Git.

🔹 Lección 1: Historia y Fundamentos del Control de Revisiones

Resumen: Esta lección traza la evolución del control de versiones desde la gestión manual de archivos hasta sistemas distribuidos sofisticados. Detalla las diferencias arquitectónicas entre los sistemas de control de versiones Local, Centralizado y Distribuido (VCS) y explica el contexto histórico específico que llevó a la creación de Git. Los estudiantes también aprenderán los pasos fundamentales para instalar Git e inicializar su primer repositorio.

Resultados de Aprendizaje:

  • Comparar y contrastar los sistemas de control de versiones Local, Centralizado y Distribuido.
  • Identificar las motivaciones históricas detrás de la creación de Git para el kernel de Linux.
  • Realizar la configuración básica de Git, incluyendo la verificación de instalación, la inicialización de repositorios y el seguimiento de archivos.

🔹 Lección 2: Dominando lo Básico: Preparación y Confirmación

Resumen: Esta lección cubre el ciclo de vida fundamental de un repositorio Git, pasando desde una carpeta de proyecto estándar hasta un entorno controlado por versiones. Los estudiantes aprenderán a inicializar repositorios, configurar la identidad del usuario, rastrear nuevos archivos y gestionar la transición de cambios a través del área de preparación hasta la historia permanente confirmada.

Resultados de Aprendizaje:

  • Inicializar un repositorio Git e identificar el papel del directorio .git.
  • Configurar ajustes globales de usuario y seguir archivos del proyecto usando el área de preparación.
  • Ejecutar confirmaciones para crear instantáneas del proyecto y revisarlas mediante el historial del repositorio.

🔹 Lección 3: Deshacer Cambios y Navegar el Historial

Resumen: Esta lección cubre las técnicas esenciales de Git para viajar en el tiempo dentro de un repositorio, permitiendo a los desarrolladores inspeccionar estados pasados, marcar hitos y deshacer errores con seguridad. Los aprendices dominarán la capacidad de ver revisiones antiguas sin cambios permanentes, usar etiquetas anotadas para etiquetar lanzamientos y distinguir entre deshacer el historial confirmado y limpiar el trabajo experimental no confirmado.

Resultados de Aprendizaje:

  • Navegar hacia commits históricos específicos usando sus IDs y regresar al estado actual del proyecto.
  • Crear y gestionar etiquetas anotadas para identificar versiones estables de lanzamiento.
  • Aplicar git revert para deshacer cambios específicos ya confirmados, manteniendo un historial transparente.

🔹 Lección 4: Ramificación Esencial y Fusión Básica

Resumen: Esta lección cubre el ciclo de vida fundamental de las ramas de Git, pasando desde la conceptualización de ramas como líneas independientes de desarrollo hasta su ejecución práctica. Los estudiantes aprenderán a crear, navegar y visualizar historiales bifurcados de proyectos, culminando en la integración del trabajo mediante fusiones "fast-forward" y "tres vías", y la posterior limpieza de ramas temporales.

Resultados de Aprendizaje:

  • Identificar, crear y cambiar entre ramas usando la CLI de Git.
  • Interpretar diagramas de historial bifurcado para entender la relación entre master y ramas de características.
  • Ejecutar y distinguir entre fusiones "fast-forward" y fusiones "tres vías".

🔹 Lección 5: Ramificación Avanzada y Resolución de Conflictos

Resumen: Esta lección explora operaciones avanzadas de Git necesarias ante historiales de proyecto divergentes. Cubre los mecanismos teóricos de fusiones de tres vías, el uso práctico de la bandera -a para facilitar confirmaciones, y la gestión de ramas de características de larga duración. Los estudiantes aprenderán a navegar interacciones complejas entre ramas, resolver conflictos de fusión manualmente y mantener la higiene del repositorio mediante una correcta limpieza de ramas.

Resultados de Aprendizaje:

  • Explicar la diferencia estructural entre una fusión "fast-forward" y una fusión de tres vías.
  • Utilizar la bandera -a para combinar la preparación y confirmación de archivos rastreados.
  • Identificar y resolver conflictos de fusión interpretando los marcadores de conflicto de Git.

🔹 Lección 6: Rebase para un Historial de Proyecto Lineal

Resumen: Esta lección cubre las técnicas utilizadas para mantener un historial de proyecto limpio y lineal, moviendo y condensando confirmaciones. Los aprendices dominarán la transición de ramas divergentes a una línea temporal unificada mediante rebase estándar, rebase interactivo (agrupación), y la capacidad de modificar confirmaciones específicas durante el proceso. Al final de este módulo, los estudiantes comprenderán cómo eliminar commits de fusión innecesarios y presentar un registro de confirmaciones profesional y optimizado.

Resultados de Aprendizaje:

  • Mover la base de una rama de características al punto final de otra rama para habilitar fusiones "fast-forward".
  • Utilizar el rebase interactivo para condensar (squash) múltiples pequeñas confirmaciones en instantáneas únicas y significativas.
  • Modificar confirmaciones existentes durante un rebase usando las funcionalidades edit y --amend.

🔹 Lección 7: Reescribir el Historial y la Seguridad del Reflog

Resumen: Esta lección explora técnicas avanzadas de Git para mantener un historial de proyecto limpio y profesional. Los aprendices dominarán el "Rebase Interactivo" para reescribir confirmaciones pasadas, aprenderán el flujo de trabajo preciso para dividir confirmaciones genéricas en actualizaciones granulares y utilizarán el "Reflog" como red de seguridad poderosa para recuperar datos aparentemente perdidos.

Resultados de Aprendizaje:

  • Realizar un rebase interactivo para modificar, editar o dividir confirmaciones históricas.
  • Descomponer una única confirmación genérica en múltiples confirmaciones independientes y significativas usando git reset --mixed.
  • Navegar el Reflog de Git para identificar y recuperar "confirmaciones colgantes" que ya no están vinculadas a una rama.

🔹 Lección 8: Colaborar mediante Push y Fetch

Resumen: Esta lección explora los flujos de trabajo fundamentales para la colaboración multiusuario en Git. Aprenderás a crear clones independientes de repositorios, configurar identidades locales para simular usuarios diferentes y establecer conexiones "remotas" para intercambiar código. La lección se centra en los mecanismos de obtener datos (fetch) y enviar datos (push) entre repositorios para sincronizar los esfuerzos de desarrollo.

Resultados de Aprendizaje:

  • Clonar y Configurar: Duplicar correctamente un repositorio y establecer configuraciones locales de usuario.
  • Sincronizar Remotos: Agregar marcadores remotos y usar fetch y merge para integrar cambios de otros desarrolladores.
  • Gestionar Estado Remoto: Navegar ramas remotas e entender el estado "HEAD desvinculado" al inspeccionar código no local.

🔹 Lección 9: Modelo de Repositorio Compartido Centralizado

Resumen: Esta lección cubre la transición desde el intercambio de repositorios punto a punto hasta un flujo de trabajo centralizado. Los estudiantes aprenderán a crear un repositorio "vacío" para actuar como centro de comunicación, reconfigurar remotos para un entorno de equipo y gestionar la sincronización de cambios (push y pull) entre múltiples desarrolladores para mantener un historial de proyecto coherente.

Resultados de Aprendizaje:

  • Inicializar y configurar un repositorio vacío para servir como servidor central.
  • Gestionar conexiones remotas para redirigir los flujos de trabajo locales hacia un centro central.
  • Ejecutar un flujo de trabajo estandarizado para actualizar contenido compartido y resolver historiales divergentes usando fetch, rebase y merge.

🔹 Lección 10: Modelo de Integrador Distribuido

Resumen: Esta lección explora la transición desde el control de versiones centralizado hasta el Modelo de Integrador Distribuido usando Bitbucket como proveedor de alojamiento. Los aprendices progresarán desde la configuración de un repositorio público hasta la gestión de un flujo de trabajo sofisticado donde un "Integrador" revisa y fusiona contribuciones de repositorios públicos de desarrolladores pares en una versión oficial del proyecto.

Resultados de Aprendizaje:

  • Configurar una cuenta de Bitbucket y establecer un repositorio remoto público para la colaboración distribuida.
  • Ejecutar el "Flujo de Trabajo del Integrador" gestionando múltiples remotos para obtener, revisar y fusionar contribuciones externas.
  • Mantener la sincronización entre entornos locales privados y repositorios visibles públicamente en un equipo de desarrolladores.

🔹 Lección 11: Comunicación y Flujos Basados en Parches

Resumen: Esta lección cubre el ciclo de vida de la colaboración basada en parches en Git, un método utilizado para compartir confirmaciones individuales entre desarrolladores sin necesidad de acceso compartido a un repositorio central. Los estudiantes aprenderán a generar archivos de parche a partir de confirmaciones locales, distribuirlos por correo electrónico y integrar parches entrantes en la rama principal del proyecto.

Resultados de Aprendizaje:

  • Generar archivos de parche individuales a partir de confirmaciones específicas o ramas usando git format-patch.
  • Aplicar archivos de parche externos a un repositorio local usando el comando git am y redirección de entrada estándar.
  • Ejecutar un flujo de trabajo completo de integración, incluyendo pruebas de parches en ramas temporales y su fusión en la rama master.

🔹 Lección 12: Utilidades de Git, Hooks y Diffs Avanzados

Resumen: Esta lección cubre comandos esenciales de utilidades de Git y técnicas de personalización para una gestión avanzada de repositorios. Los estudiantes aprenderán a exportar y compartir repositorios mediante archivado y empaquetado, mantener un espacio de trabajo limpio usando .gitignore y el stash, automatizar flujos de trabajo mediante hooks de Git y optimizar su experiencia de línea de comandos con comparaciones de diff avanzadas y alias personalizados.

Resultados de Aprendizaje:

  • Diferenciar y ejecutar exportaciones de repositorios usando archivado (sin historial) y empaquetado (con historial completo).
  • Configurar patrones de exclusión de archivos y gestionar cambios temporales en progreso.
  • Implementar scripts de automatización dentro del sistema de hooks interno de Git y acelerar flujos de trabajo usando alias de configuración.

🔹 Lección 13: Git Plumbing: La Base de Datos Interna de Objetos

Resumen: Esta lección profundiza bajo los comandos fáciles de usar de Git ("porcelana") para explorar su "plumbing"—la base de datos de objetos de bajo nivel. Aprenderás cómo Git utiliza cuatro tipos distintos de objetos (Blobs, Árboles, Confirmaciones y Etiquetas) y sumas SHA-1 para registrar el historial del proyecto. Al final de este módulo, comprenderás cómo manipular manualmente el índice y la base de datos de objetos para crear confirmaciones sin usar la interfaz alta estándar.

Resultados de Aprendizaje:

  • Definir y distinguir entre los cuatro tipos de objetos de Git: Blobs, Árboles, Confirmaciones y Etiquetas.
  • Explicar el papel de HEAD y las referencias de rama al señalar objetos de confirmación específicos.
  • Demostrar el flujo de trabajo "plumbing": preparar manualmente archivos, escribir árboles y crear objetos de confirmación.