Skip to content

[Actualizado a 6 de julio de 2026]

0.1. Control de versiones:

OBJETIVOS

  1. Introducción y Configuració: Deberemos pasar de "no saber nada" a tener un proyecto de Python con seguimiento en el tiempo y respaldado en la nube.
  2. Colaboración y Flujo de Trabajo: Aprender a trabajar en equipo sin destruir el código de los demás.

0.1.1. Introducción y Configuración

  • ¿Qué es Git y por qué lo necesitamos? (Diferencia entre Git y GitHub/GitLab).
  • Instalación guiada:
    • Instalación de Git en el SO.
    • Configuración inicial de identidad: git config --global user.name y user.email.
    • Ecosistema VSCode: Instalación de la extensión Git Graph (opcional pero recomendada).

0.1.2. El Ciclo de Vida del Archivo

  • Conceptos clave: El área de trabajo (Working Directory), el Área de Preparación (Staging Area) y el Repositorio (Local Repo).
  • Comandos Básicos en acción:
    • git init: Crear un nuevo proyecto.
    • git status: El comando más importante para el principiante.
    • git add: Preparar archivos.
    • git commit -m "mensaje": Crear la "foto" del proyecto.
  • ⚠️ El toque Python:
    • Introducción al archivo .gitignore.
    • Práctica: Crear un .gitignore para Python que ignore __pycache__/, .venv/, .env y archivos .pyc. Esto evitará que subamos "basura" al repositorio.

0.1.3. Conexión con el Mundo

  • Creación de Repositorios Remotos: Creación de un repo en GitHub o GitLab.
  • El puente:
    • git remote add origin <url>.
    • git push -u origin main: Subir el código por primera vez.
  • Lo fácil: git clone <url> y tendremos una copia local

Ejercicio: 1. crear un script hola_mundo.py 2. hacer un repositorio local con él. 3. confirmar los cambios en el archivo. 4. sincronizarlo con el repositorio remoto (en Github). 5. crear una copia local en otro directorio de trabajo.

0.1.4. El Concepto de Ramas (Branches)

  • ¿Por qué usar ramas? El concepto de "Feature Branching" (desarrollar nuevas funciones sin romper la versión estable).
  • Comandos de Ramas:
    • git branch: Listar ramas.
    • git checkout -b <nombre-rama> (o git switch -c): Crear y saltar a una rama.
    • git merge: Integrar cambios de una rama a otra.
  • Visualización con Git Graph: Ver cómo la línea del tiempo se bifurca y se vuelve a unir.

Nota: A menudo los alumnos comienzan utilizando rebase por recomendación de la IA, pero este comando NO será válido para uso en equipo, por lo que debemos evitar su uso.

0.1.5. Colaboración y Conflictos

  • El flujo de trabajo diario:
    • git pull: Traer cambios de la nube a local o "darle los buenos días al proyecto".
    • git fetch: Ver qué hay de nuevo sin descargar o "despedirse hasta mañana".
  • El "Terror" de los Desarrolladores: Conflictos de Merge.
    • Simulación controlada: Dividir a los alumnos en parejas. El Alumno A y el Alumno B editan la misma línea de un archivo en sus respectivos repositorios.
    • Resolución de conflictos en VSCode: Mostrar las herramientas visuales de VSCode para elegir "Accept Current Change" o "Accept Incoming Change".

Fuente: learn.microsoft.com

0.1.6. Práctica Final: "El Desafío de Integración"

  1. Cread un repositorio base con un script de Python simple.
  2. Clonalo en otro directorio de trabajo (simulamos trabajo colaborativo).
  3. Crea una rama llamada feature-calculadora en cada uno de los 2 repositorios locales.
  4. Debéis añadir una función nueva al script.
  5. Debéis hacer push de su rama.
  6. Hace un merge de todas las ramas en uno de los repositorios locales, con las ramas remotas.

Cierre: Reflexión sobre buenas prácticas (mensajes de commit claros, no subir secretos/passwords).

Recomendación: seguir la motodología propuesta por Conventional commits

TIPs:

  1. Crear un Cheat Sheet: Toma un folio (A4) y apunta los comandos vistos (init, add, commit, status, push, pull, branch, merge).

    Esta chuleta podrás utilizarla en el examen.

  2. Plantilla .gitignore: Crea una plantilla .gitignore para Python para futuros proyectos. > Esta plantilla deberás usarla en las entregas.