La siguiente es una guía detallada con el flujo de trabajo moderno y recomendado para estudiantes.

Esta guía utiliza una estrategia de ramificación (branching), que es el estándar en la industria y la mejor forma de evitar los típicos conflictos y la sobreescritura de trabajo cuando se colabora en un mismo archivo, especialmente en un notebook .ipynb.


🚀 Guía de Trabajo Colaborativo: Google Colab + GitHub 🚀

¡Hola equipo! Esta guía les mostrará cómo colaborar en un único notebook de Google Colab utilizando GitHub sin pisarse el trabajo. Seguiremos un flujo profesional basado en ramas (branches) y Solicitudes de Extracción (Pull Requests).

El objetivo: Que cada estudiante trabaje en su parte (Situación 1, 2 o 3) de forma aislada y luego integre sus cambios de manera ordenada al proyecto principal.

Roles:

  • Estudiante 1 (Líder del Repositorio): Responsable de la configuración inicial y de fusionar los cambios de los demás.
  • Estudiante 2 y 3 (Colaboradores): Responsables de desarrollar sus secciones en ramas separadas.

Fase 1: Configuración Inicial (Realizada por el Estudiante 1)

El Estudiante 1 prepara el terreno para la colaboración.

1.1. Crear el Repositorio en GitHub

  • Ve a GitHub y crea un nuevo repositorio.
  • Nombre del repositorio: proyecto-estadistica-aplicada (o un nombre descriptivo).
  • Descripción: Añade una breve descripción del proyecto.
  • Público/Privado: Elige Privado si solo los miembros del equipo pueden verlo.
  • Importante: Marca la casilla “Add a README file”. Esto inicializa el repositorio.

1.2. Añadir Colaboradores

  • Dentro del repositorio, ve a Settings > Collaborators.
  • Añade a los Estudiantes 2 y 3 usando sus nombres de usuario de GitHub. Ellos recibirán una invitación por correo que deben aceptar.

1.3. Crear y Subir el Notebook Inicial

  1. Abre Google Colab y crea un nuevo notebook.

  2. Estructura el notebook: Crea los encabezados para cada parte del trabajo. Esto es clave para minimizar conflictos.

    # CUADERNO DE TRABAJO COLABORATIVO
    # Asignatura: Estadística Aplicada con Python
    
    # ==========================================
    # SECCIÓN 1: Estudiante 1
    # ==========================================
    # TODO: Desarrollar aquí la Situación 1
    
    # ==========================================
    # SECCIÓN 2: Estudiante 2
    # ==========================================
    # TODO: Desarrollar aquí la Situación 2
    
    # ==========================================
    # SECCIÓN 3: Estudiante 3
    # ==========================================
    # TODO: Desarrollar aquí la Situación 3
  3. Guarda este notebook inicial en el repositorio de GitHub:

    • En Colab, ve a Archivo > Guardar una copia en GitHub.
    • Selecciona el repositorio que acabas de crear.
    • El nombre del archivo puede ser desarrollo_proyecto.ipynb.
    • Mensaje de confirmación (commit message): “feat: Crea estructura inicial del notebook”.
    • Asegúrate de que se guarde en la rama principal (main).

¡Listo! El proyecto base ya está en GitHub.


Fase 2: Ciclo de Desarrollo (Para TODOS los estudiantes)

Cada estudiante, incluido el Estudiante 1, debe seguir estos pasos para trabajar en su sección. ¡Nunca trabajen directamente sobre la rama main!

2.1. Abrir el Notebook desde GitHub

  • Ve al repositorio en GitHub.
  • Haz clic en el archivo .ipynb. Verás un botón de “Open in Colab”. Dale clic.

2.2. Crear una Rama de Trabajo (Branch)

  • Una vez en Colab, antes de escribir una sola línea de código, guarda una copia en una nueva rama. Esto aísla tu trabajo.
  • Ve a Archivo > Guardar una copia en GitHub.
  • En la ventana de guardado:
    • Repositorio: Elige el repositorio del proyecto.
    • Rama (Branch): ¡MUY IMPORTANTE! Escribe un nuevo nombre para tu rama. Usa un nombre descriptivo.
      • Para Estudiante 2: desarrollo/situacion-2
      • Para Estudiante 3: desarrollo/situacion-3
      • Para Estudiante 1 (su trabajo): desarrollo/situacion-1
    • Mensaje de confirmación: “feat: Inicia desarrollo de Situación X”.
  • Al guardar, Colab te redirigirá a la versión del notebook en tu nueva rama. Ahora sí, ¡a trabajar!

2.3. Desarrollar tu Parte

  • Trabaja únicamente en la sección que te corresponde dentro del notebook.
  • A medida que avanzas, puedes guardar tus cambios en GitHub. Colab recordará la rama en la que estás trabajando.
  • Para guardar, solo tienes que ir a Archivo > Guardar una copia en GitHub.
  • Usa mensajes de confirmación claros y descriptivos. Por ejemplo:
    • "fix: Corrige error en el cálculo de la media"
    • "feat: Agrega la visualización de datos con Matplotlib"

2.4. Crear una Solicitud de Extracción (Pull Request)

Cuando hayas terminado tu parte (o un avance significativo que quieras integrar), es hora de proponer tus cambios.

  1. Ve al repositorio en GitHub. Verás un mensaje amarillo que dice que tu rama (desarrollo/situacion-2) tiene cambios recientes.
  2. Haz clic en el botón “Compare & pull request”.
  3. Se abrirá una nueva página.
    • Base: main (la rama principal a la que quieres fusionar).
    • Compare: desarrollo/situacion-2 (tu rama con los cambios).
    • Título: Pon un título claro, por ejemplo: “Desarrollo de la Situación 2”.
    • Comentario: Describe brevemente los cambios que hiciste. Puedes mencionar al Estudiante 1 (@nombre-de-usuario) para notificarle.
  4. Haz clic en “Create pull request”.

¡Excelente! Has solicitado formalmente que tu trabajo se integre al proyecto principal. Ahora la responsabilidad pasa al Líder del Repositorio.


Fase 3: Integración de Cambios (Realizada por el Estudiante 1)

El Estudiante 1 revisa y fusiona las contribuciones.

3.1. Revisar el Pull Request (PR)

  • En la pestaña “Pull requests” del repositorio, aparecerá la solicitud del Estudiante 2.
  • Haz clic en el PR para revisarlo.
  • Puedes ir a la pestaña “Files changed” para ver exactamente qué líneas de código se añadieron o modificaron. Esto es útil para detectar posibles problemas.

3.2. Fusionar el Pull Request (Merge)

  • Si todo se ve bien y no hay conflictos, GitHub mostrará un botón verde “Merge pull request”.
  • Haz clic en él y luego en “Confirm merge”.
  • ¡Felicidades! Los cambios de la rama desarrollo/situacion-2 ahora forman parte de la rama main.
  • Después de fusionar, es una buena práctica eliminar la rama (Delete branch) para mantener el repositorio limpio.

Manejo de Conflictos

  • Si dos estudiantes modificaron la misma línea de código, GitHub detectará un conflicto de fusión y no te permitirá fusionar automáticamente.
  • Solución:
    1. Comunicación: El Estudiante 1 debe hablar con el estudiante que envió el PR.
    2. Actualización: La forma más sencilla es que el estudiante del PR actualice su rama con los últimos cambios de main, resuelva el conflicto en su máquina (o en Colab) y vuelva a subir los cambios a su PR.
    3. Para actualizar su rama, el estudiante debe abrir su notebook en Colab, jalar los cambios de main y luego subir la versión corregida.

Fase 4: Sincronización (Para TODOS)

Una vez que un Pull Request ha sido fusionado a main, todos los demás deben actualizar sus propias ramas para incluir esos cambios.

  1. Abre tu notebook de trabajo en Colab (el que está en tu rama desarrollo/...).
  2. Para sincronizar, debes “jalar” los cambios de main. La forma más directa desde Colab es:
    • Abre la versión del notebook que está en la rama main (Archivo > Historial de revisiones, busca la versión de main o simplemente ábrelo desde la página principal del repo).
    • Copia el código actualizado.
    • Pégalo en tu notebook de trabajo.
    • Alternativamente (más avanzado), un estudiante puede hacer esto localmente con Git: bash # Cambiar a mi rama git checkout desarrollo/situacion-3 # Traer los cambios de la rama principal git pull origin main
  3. Guarda los cambios actualizados en tu propia rama en GitHub.

Este ciclo ( Crear Rama -> Trabajar -> Guardar -> Pull Request -> Fusionar -> Sincronizar ) se repite hasta que el proyecto esté completo.


💡 Buenas Prácticas y Consejos Finales

  • Comunicación Constante: Hablen entre ustedes. Avisen cuándo van a empezar a trabajar y cuándo han enviado un Pull Request.
  • Trabajen en Secciones Separadas: La estructura inicial del notebook es su mejor amiga para evitar conflictos.
  • Confirmaciones Pequeñas y Frecuentes: En lugar de guardar un solo cambio gigante al final, guarda tu progreso con frecuencia (Archivo > Guardar una copia en GitHub). Esto crea un historial claro y facilita la revisión.
  • No teman a los conflictos: Son normales en el desarrollo de software. Son una oportunidad para aprender a comunicarse y resolver problemas en equipo.