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:
- 🔴 Zona Prohibida (
clase/): Aquí subo yo (el profesor) el material. Si modificas algo aquí, romperás tu repositorio al intentar actualizar. - 🟢 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:
- Abres
clase/semana1/calculadora.py. - Arreglas el código ahí mismo.
- Guardas.
- Mañana el profesor actualiza
calculadora.pycon una mejora. - 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:
- Lees el archivo en
clase/semana1/calculadora.py. - Copias el archivo a
estudiantes/tu_usuario/semana1/calculadora.py. - Editas y resuelves el problema en TU COPIA.
- Subes tu copia.
- El profesor actualiza su archivo original.
- Haces
git pull upstream main. - Git actualiza la carpeta
clase/sin problemas. Tu archivo enestudiantes/permanece intacto y seguro. Cero conflictos.
Setup Inicial: Crea tu Espacio
Tu primera misión es crear tu “oficina” dentro del repositorio.
- Abre tu terminal en la raíz del proyecto.
- Ve a la carpeta de estudiantes:
cd estudiantes - Crea una carpeta EXACTAMENTE con tu nombre de usuario de GitHub.
- Ejemplo: Si tu usuario es
uumami, tu carpeta debe serestudiantes/uumami/.
mkdir uumami - Ejemplo: Si tu usuario es
- Entra a tu carpeta:
cd uumami - 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.
- Ve a https://github.com/sonder-art/fdd_p26.
- Arriba a la derecha, dale click al botón Fork.
- GitHub te pedirá confirmar el nombre del repositorio.
- Puedes dejarlo como
fdd_p26(recomendado).
- Puedes dejarlo como
- 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)