Haz Fork del repositorio del curso, clónalo a tu máquina y configura el remote upstream. Crea tu carpeta personal en estudiantes/tu_usuario/.

Estructura del Curso y Tu Carpeta Personal

Para este curso, trabajaremos de una manera muy específica para simular un entorno profesional y evitar conflictos de código. Este documento explica dónde puedes escribir y dónde está prohibido.

Diagrama Mental del Flujo

Este diagrama resume cómo fluye la información entre el profesor y tú sin chocar.

graph TD
    A[Profesor Repo] -->|Pull (Sincronizar)| B[Tu Repo Local];
    B -->|Copia Archivo| C{Tu Carpeta Personal};
    D[Zona Prohibida 'clase/'] -.->|Solo Lectura| B;
    C -->|Edit & Commit| E[Tu Rama];
    E -->|Push| F[Tu GitHub Fork];
    F -->|Pull Request| A;
    style C fill:#9f9,stroke:#333
    style D fill:#f99,stroke:#333

La Regla de Oro: estudiantes/{tu_usuario}

El repositorio tiene una estructura estricta dividida en dos mundos:

  1. 🔴 Zona Prohibida (clase/): Aquí subo yo (el profesor) el material. Si modificas algo aquí, romperás tu repositorio al intentar actualizar.
  2. 🟢 Zona Segura (estudiantes/tu_usuario/): Aquí es donde vives tú. Puedes crear, borrar y destruir lo que quieras aquí.

Diagrama de la Estructura

fdd_p26/ (Raíz del Proyecto)
├── .gitignore
├── README.md
├── clase/                  <-- 🔴 PROHIBIDO TOCAR (Solo lectura)
│   ├── 04_terminal/
│   ├── 05_bash/
│   ├── 06_git/
│   └── ...
└── estudiantes/            <-- 🟢 TU ZONA DE TRABAJO
    ├── tu_usuario/         <-- ✅ TU CARPETA (Safe Zone)
    │   ├── certificaciones/
    │   │   └── github.md
    │   └── tareas/
    └── otro_estudiante/    <-- ❌ CARPETA DE OTRO (No tocar)

El Concepto de “Mirror” (Espejo)

Como no puedes editar la carpeta clase/, ¿cómo trabajas en los ejercicios? Respuesta: Copias y Pegas a tu carpeta.

Anatomía de una Colisión (Por qué fallamos)

Imagina que el profesor sube el archivo clase/semana1/calculadora.py que tiene errores y debes arreglar.

❌ Lo que NO debes hacer (Colisión Segura)

sequenceDiagram
    participant P as Profesor (Repo Original)
    participant E as Estudiante (Tu Local)
    
    P->>E: Pull (Bajas archivo: clase/hola.py)
    Note over P: hola.py dice: "Hola Mundo"
    
    E->>E: Modificas clase/hola.py
    Note over E: Cambias a: "Hola Pedro"
    
    P->>P: Profesor actualiza clase/hola.py
    Note over P: Cambia a: "Hola Clase 2024"
    
    E->>P: Intentas Pull de nuevo
    P--x E: 💥 CONFLICTO!
    Note over E: Git no sabe si quieres "Hola Pedro"<br/>o "Hola Clase 2024".<br/>Todo se rompe.

Explicación:

  1. Abres clase/semana1/calculadora.py.
  2. Arreglas el código ahí mismo.
  3. Guardas.
  4. Mañana el profesor actualiza calculadora.py con una mejora.
  5. Cuando hagas git pull upstream main, Git te gritará: CONFLICTO. Tu versión choca con la del profesor. Tendrás que borrar tu trabajo o sufrir arreglando el conflicto manual.

✅ Lo que SÍ debes hacer (El Camino del Éxito)

sequenceDiagram
    participant P as Profesor (Repo Original)
    participant E as Estudiante (Tu Local)
    
    P->>E: Pull (Bajas archivo: clase/hola.py)
    
    E->>E: COPIAS archivo a estudiantes/pedro/hola.py
    Note over E: Ahora tienes tu propia versión segura
    
    E->>E: Modificas estudiantes/pedro/hola.py
    Note over E: Cambias a: "Hola Pedro"
    
    P->>P: Profesor actualiza clase/hola.py
    
    E->>P: Intentas Pull de nuevo
    P->>E: ✅ Éxito (Update Fast-Forward)
    Note over E: Se actualiza la carpeta clase/<br/>Tu archivo en estudiantes/ sigue intacto.

Explicación:

  1. Lees el archivo en clase/semana1/calculadora.py.
  2. Copias el archivo a estudiantes/tu_usuario/semana1/calculadora.py.
  3. Editas y resuelves el problema en TU COPIA.
  4. Subes tu copia.
  5. El profesor actualiza su archivo original.
  6. Haces git pull upstream main.
  7. Git actualiza la carpeta clase/ sin problemas. Tu archivo en estudiantes/ permanece intacto y seguro. Cero conflictos.

Setup Inicial: Crea tu Espacio

Tu primera misión es crear tu “oficina” dentro del repositorio.

  1. Abre tu terminal en la raíz del proyecto.
  2. Ve a la carpeta de estudiantes:
    cd estudiantes
    
  3. Crea una carpeta EXACTAMENTE con tu nombre de usuario de GitHub.
    • Ejemplo: Si tu usuario es uumami, tu carpeta debe ser estudiantes/uumami/.
    mkdir uumami
    
  4. Entra a tu carpeta:
    cd uumami
    
  5. Crea un archivo de prueba para que Git detecte la carpeta (Git ignora carpetas vacías):
    touch .gitkeep
    

Setup del Repositorio (Fork y Clone)

Sigue estos pasos con cuidado. El repositorio oficial de la clase es: https://github.com/sonder-art/fdd_p26

1. Fork (Bifurcación)

Paso Crítico: No trabajaremos directamente sobre el repositorio del profesor, sino sobre una copia tuya.

  1. Ve a https://github.com/sonder-art/fdd_p26.
  2. Arriba a la derecha, dale click al botón Fork.
  3. GitHub te pedirá confirmar el nombre del repositorio.
    • Puedes dejarlo como fdd_p26 (recomendado).
  4. Dale a “Create Fork”. Ahora tendrás una copia en https://github.com/TU_USUARIO/fdd_p26.

2. Clone (Clonar)

Ahora bajaremos TU copia (tu fork) a tu computadora usando SSH:

# Clona TU fork (no el del profesor)
git clone git@github.com:TU_USUARIO/fdd_p26.git

# Entra a la carpeta
cd fdd_p26

⚠️ Verifica: El URL debe tener TU usuario, no sonder-art.

3. Configurar el “Upstream”

Tu computadora sabe que origin es TU repositorio (tu fork). Pero necesita saber que existe el repositorio del profesor (upstream) para bajar las actualizaciones de la clase.

# Agrega el repo del profesor como "upstream"
git remote add upstream git@github.com:sonder-art/fdd_p26.git

Verifica que tienes ambos:

git remote -v

Deberías ver 4 líneas:

origin    git@github.com:TU_USUARIO/fdd_p26.git (fetch)
origin    git@github.com:TU_USUARIO/fdd_p26.git (push)
upstream  git@github.com:sonder-art/fdd_p26.git (fetch)
upstream  git@github.com:sonder-art/fdd_p26.git (push)
  • origin → Tu Fork (donde subes tus tareas)
  • upstream → Repo del Profesor (de donde bajas las clases)