GitHub y colaboración
Ya tienes un repositorio Git local con historial. En este módulo lo sacamos al mundo: lo subimos a GitHub, le añadimos las piezas que todo proyecto profesional necesita —un .gitignore y un README— y aprendes el flujo de colaboración con pull requests. Al terminar, tu PROYECTO FINAL vivirá en la nube, será clonable por cualquiera y tendrá su portada de presentación.
¿Qué es?
GitHub es una plataforma web para alojar repositorios Git. Si Git es el sistema que guarda la historia en tu máquina, GitHub es el lugar donde esa historia se publica, se respalda y se comparte. Sobre Git puro, GitHub añade colaboración: pull requests, revisión de código, issues (tickets de trabajo) y control de permisos.
El repositorio en tu máquina se llama local; el de GitHub se llama remoto (remote). Sincronizas entre ambos con dos verbos: push (subir tus commits al remoto) y pull (bajar los del remoto a tu máquina).
¿Cómo funciona?
Conectas tu repositorio local con uno remoto en GitHub (le pones un nombre, por convención origin). A partir de ahí:
git pushenvía tus commits locales a GitHub.git pulltrae a tu máquina los commits que haya en GitHub.- Una pull request (PR) es una propuesta de fusión: "tengo estos cambios en mi rama, revísenlos y, si están bien, mézclenlos en
main". Es el corazón de la colaboración: nadie escribe directo enmain; se propone, se revisa y se aprueba.
¿Para qué sirve?
- Respaldo en la nube: si tu disco muere, tu proyecto sigue vivo.
- Portafolio: tus repos públicos son tu carta de presentación profesional.
- Colaboración ordenada: las PR permiten revisar antes de fusionar.
- Portada del proyecto: el
READMEexplica qué es y cómo usarlo; el.gitignoremantiene el repo limpio de basura.
Construyamos esta pieza del proyecto
Paso 1: crea el .gitignore
El .gitignore es un archivo que lista lo que Git debe ignorar: cosas que no se suben porque son grandes, generadas o privadas. El caso estrella es la carpeta .venv del primer módulo: no se sube, cada quien la recrea desde requirements.txt.
Crea el archivo en la raíz del proyecto:
cd mi-entorno-pro
Con este contenido:
# Entorno virtual (se recrea desde requirements.txt)
.venv/
# Cachés de Python
__pycache__/
*.pyc
# Variables de entorno y secretos
.env
# Archivos del sistema operativo
.DS_Store
Si ya habías subido por error una carpeta como .venv, añadirla al .gitignore no la quita del repositorio. Hay que sacarla del seguimiento: git rm -r --cached .venv y luego commit.
Paso 2: crea el README.md
El README es la portada del proyecto: lo primero que GitHub muestra. Debe responder qué es, cómo instalarlo y cómo usarlo. Crea README.md:
# Mi Entorno Pro
Entorno de desarrollo profesional, listo y reproducible.
## Requisitos
- Python 3.10 o superior
## Instalación
```bash
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
pip install -r requirements.txt
Uso
python app.py
Haz un commit con las dos piezas nuevas:
```bash
git add .gitignore README.md
git commit -m "Añade gitignore y README"
Tech English: README se lee "read me" ("léeme"). Es una convención universal: el archivo que el visitante debe leer primero.
Paso 3: crea el repositorio remoto y conéctalo
Lo más cómodo es usar la herramienta oficial de GitHub, gh. Autentícate una vez:
gh auth login
Y crea el repositorio remoto a partir del local, en un solo paso:
gh repo create mi-entorno-pro --public --source=. --remote=origin --push
Esto crea el repo en GitHub, lo conecta como origin y sube (push) tu historial.
Si prefieres hacerlo a mano (creando el repo vacío desde la web de GitHub), el equivalente es:
git remote add origin https://github.com/TU-USUARIO/mi-entorno-pro.git
git push -u origin main
El -u enlaza tu rama main local con la remota, para que en adelante baste con git push.
Paso 4: el ciclo diario push / pull
Cada vez que hagas commits nuevos, súbelos:
git push
Y antes de empezar a trabajar, baja lo que haya cambiado en el remoto:
git pull
Regla de oro de equipo: pull antes de empezar, push al terminar. Así reduces los conflictos al mínimo.
Paso 5: flujo de pull request
Así se colabora de verdad. Nunca escribes directo en main: trabajas en una rama y propones la fusión.
git switch -c feature/mejora-readme
# ...editas el README...
git add README.md
git commit -m "Mejora la sección de uso"
git push -u origin feature/mejora-readme
Ahora abre la pull request:
gh pr create --title "Mejora del README" --body "Aclara la sección de uso."
En GitHub, esa PR se puede revisar, comentar y, cuando esté aprobada, fusionar. Tras fusionarla, vuelve a main y actualiza tu local:
git switch main
git pull
No fusiones tus propias PR a ciegas en un proyecto en equipo. El sentido de la PR es que alguien más revise antes de que el cambio entre a main.
Ejercicios
- Crea un repositorio nuevo en GitHub con
gh repo create, añádele un.gitignorey unREADME.mddecentes, haz commit ypush. Abre la URL del repo en el navegador y confirma que el README se ve como portada. - En ese repo, crea una rama
feature/cambio, modifica el README, súbela y abre una pull request congh pr create. Revisa la PR en la web, fusiónala y luego hazgit switch main+git pullpara traer el cambio fusionado a tu máquina.