Chuck's Academy

Git y Github

Fundamentos de control de versiones

En este módulo, aprenderemos los fundamentos del control de versiones y cómo Git implementa estos conceptos para gestionar y rastrear cambios en los proyectos de software.

¿Qué es el control de versiones?

El control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de manera que puedas recuperar versiones específicas más adelante. Los sistemas de control de versiones son esenciales para el desarrollo de software, ya que permiten:

  • Rastreamiento de cambios: Cada modificación en el código es registrada.
  • Colaboración: Múltiples desarrolladores pueden trabajar en un mismo proyecto simultáneamente.
  • Historial completo: Puedes volver a cualquier versión anterior del proyecto.
  • Respaldo: Protege contra errores y pérdidas de datos.

Tipos de sistemas de control de versiones

Sistemas de control de versiones locales

Estos sistemas guardan versiones de archivos en un repositorio local en la misma máquina. Un ejemplo de esto es el uso de sistemas de archivos locales que permiten guardar versiones anteriores de archivos.

Sistemas de control de versiones centralizados (CVCS)

En estos sistemas, como Subversion (SVN) y CVS, todos los cambios se almacenan en un servidor central. Los desarrolladores deben estar conectados al servidor para realizar cambios y actualizar su copia local.

Sistemas de control de versiones distribuidos (DVCS)

Git y Mercurial son ejemplos de DVCS. En estos sistemas, cada desarrollador tiene una copia completa del historial del proyecto. Esto permite operaciones offline y reduce el riesgo de pérdidas de datos.

Fundamentos de Git

Repositorios

Un repositorio en Git es donde se almacena todo el historial de tu proyecto, incluyendo cambios en los archivos y directorios.

  • Inicializar un repositorio:
    bash

Commits

Un commit es una instantánea del estado de tu proyecto en un momento dado. Cada commit tiene un identificador único (SHA-1), un mensaje descriptivo y metadatos, como autor y fecha.

  • Hacer un commit:
    bash

Ramas (Branches)

Las ramas permiten trabajar en diferentes características o correcciones de bugs en paralelo. La rama principal en la que trabajamos usualmente se llama main o master.

  • Crear una rama:
    bash

Fusionado (Merging)

Merging es el proceso de unir cambios de diferentes ramas en una única rama.

  • Fusionar una rama:
    bash

Conflictos

Los conflictos ocurren cuando hay cambios en las mismas partes de un archivo en diferentes ramas. Git te solicitará resolver estos conflictos manualmente.

Flujo de trabajo básico en Git

  1. Crear un repositorio local:

    bash
  2. Añadir archivos al área de preparación (stage):

    bash
  3. Hacer un commit:

    bash
  4. Crear una nueva rama:

    bash
  5. Fusionar cambios de otra rama:

    bash

Flujo de trabajo colaborativo en GitHub

  1. Clonar un repositorio remoto:

    bash
  2. Hacer cambios y subirlos al repositorio remoto:

    bash

Conceptos avanzados

  • Rebasing: Reorganiza las series de commits en una rama.
  • Cherry-pick: Aplica cambios específicos de un commit a otra rama.

Git combina la simplicidad de los sistemas de control de versiones locales con la potencia de los sistemas distribuidos, haciéndolo una herramienta esencial para desarrolladores modernos.

En el próximo módulo, abordaremos cómo crear y clonar repositorios en Git y GitHub.


Pregúntame lo que sea