¿Cómo integrar herramientas de Git y GitHub en un proyecto real?
El mundo del desarrollo de software se enriquece con herramientas colaborativas que facilitan el trabajo en equipo y la gestión de proyectos. Git y GitHub son dos de estos recursos esenciales que, cuando se integran correctamente, facilitan la colaboración y aseguran un flujo de trabajo eficiente. Aquí exploraremos cómo aprovechar al máximo estas herramientas y unirlas en un proyecto real.
¿Cómo crear un repositorio en GitHub y clonarlo de manera local?
Para comenzar, necesitas crear un repositorio en GitHub y clonarlo en tu entorno local. Asegúrate de contar con un README.md para documentar tu proyecto desde el inicio. Una vez en tu máquina local, abre el repositorio en un editor de código como Visual Studio Code. Este será el punto de partida para organizar tu desarrollo.
Crear el directorio .github: Usa este directorio para almacenar plantillas y otras configuraciones.
Agregar plantillas: Añade un archivo como pull-request-template.md para formalizar los procesos colaborativos y asegurarte de que todos los miembros del equipo siguen las mismas pautas al crear un pull request.
¿Cómo gestionar ramas y commits de manera efectiva?
En Git, siempre es recomendable trabajar en ramas diferentes al main para evitar conflictos y mantener el código base seguro. Crea una nueva rama para cada característica o tarea que estés desarrollando.
Crear una nueva rama:
Siempre asegúrate de estar fuera de la rama principal cuando desarrolles nuevas características.
Usa un nombre descriptivo para la rama que refleje la tarea que estás realizando.
git checkout -b mi-nueva-rama
Realizar commits: Asegúrate de que cada commit describa claramente los cambios realizados.
gitadd.git commit -m "Implementación de nueva API"
¿Cómo desarrollar y probar una API en Python?
Hemos hablado sobre la configuración del entorno de desarrollo; ahora, toca desarrollar una simple API en Python.
Configurar la estructura del proyecto:
Crea una carpeta dedicada para tu API, por ejemplo, api.
Añade un archivo app.py y requirements.txt en la raíz de tu carpeta de API.
Instalar las dependencias necesarias:
Asegúrate de que requirements.txt contenga todos los paquetes necesarios.
pip3 install -r requirements.txt
Desplegar la API:
Usa herramientas como uvicorn para lanzar tu servidor y verificar que todo funcione correctamente.
uvicorn app:app --reload
¿Cómo efectuar un pull request en GitHub?
Al finalizar tus cambios y haberlos probado adecuadamente, es hora de subirlos a GitHub y abrir un pull request. Esto no solo integra tus cambios al repositorio principal, sino que también permite revisiones de tus compañeros de equipo.
Subir cambios a GitHub:
Asegúrate de estar en la rama correcta y empuja tus cambios.
git push -u origin mi-nueva-rama
Crear un pull request:
Utiliza el archivo pull-request-template.md para seguir una guía estructurada en el momento de realizar el pull request.
Compartir una base común, usando las plantillas y el flujo de trabajo explicados, asegura que todos los miembros del equipo estén alineados y que el proyecto avance sin contratiempos.
Consejos adicionales
Nunca trabajes directamente en main: Esto protege la integridad del proyecto principal y permite un flujo de desarrollo más organizado.
Utiliza plantillas: Tanto para issues como para pull requests, asegurando que toda la comunicación sea clara y relevante.
Revisión de código colaborativo: Anima a tus compañeros a revisar el código antes de fusionarlo en el main, esto ayuda a detectar errores más temprano y aprender de los diferentes enfoques en el equipo.
Este proceso asegura no solo una correcta integración de herramientas, sino que también fomenta un ambiente de trabajo colaborativo y organizado, esencial en todo proyecto de software.
### Descripción del cambioPor favor, proporciona una descripción detallada de los cambios realizados en este PR.
### ¿Cuál es el contexto de este cambio?Explica el contexto y por qué se necesita este cambio.
### ¿Cómo se probaron estos cambios?Describe los pasos que tomaste para probar que los cambios funcionan como se espera.
### ¿Existen tickets relacionados?Víncula cualquier ticket o issue relacionado con este PR.
### Captura de pantalla (si aplica)Si los cammbios afectan a la interfaz de usuario, por favor adjunta capturas de pantalla.
### Checklist- [] He seguido las convenciones de estilo de código de este repositorio.
- [] He añadido pruebas unitarias para los cmabios que lo requieren.
- [] Todos los tests pasan correctamente.
- [] He documentado adecuadamente los cambios en el código.
### Otros comentariosAgrega cualquier otra información relevante aquí.
Gracias por tu aporte
Genial! Gracias
Hola
Les comparto el markdown de pull_request_template.md, el cual obtuve usando ChatGPT
### **Descripción del Cambio**
Por favor, proporciona una descripción detallada de los cambios realizados en este PR.
### **¿Cuál es el contexto de este cambio?**
Explica el contexto y por qué se necesita este cambio.
### **¿Cómo se probaron estos cambios?**
Describe los pasos que tomaste para probar que los cambios funcionan como se espera.
### **¿Existen tickets relacionados?**
Vincula cualquier ticket o issue relacionado con este PR.
### **Capturas de Pantalla (si aplica)**
Si los cambios afectan a la interfaz de usuario, por favor adjunta capturas de pantalla.
### **Checklist**
- [ ] He seguido las convenciones de estilo de código de este repositorio.
- [ ] He añadido pruebas unitarias para los cambios que lo requieren.
- [ ] Todos los tests pasan correctamente.
- [ ] He documentado adecuadamente los cambios en el código.
### **Otros Comentarios**
Agrega cualquier otra información relevante aquí.
Gracias por tu aporte
Muchisimas Gracias!
Me molesta demasiado que diga que hay algo en los recursos de la clase y no esté. Y ha pasado en la mayoría de las clases en las que lo ha dicho.
Eso sería un buen Issue
aiiññ siii ... y quita mucho tiempo andar buscando y a veces no se encuentran ni en comentarios u.u
Y recuerden amigos... siempre trabajen con su propia rama 😉
Hola tengo un error que no me deja avanzar y no se como solucionarlo```js
pip3 install -r requirements.txt
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Pythonpackage,create a virtual environment using python3 -m venv path/to/venv.Then use path/to/venv/bin/python and path/to/venv/bin/pip.Makesure you have python3-full installed.If you wish to install a non-Debian packaged Python application,it may be easiest to use pipx install xyz, which will manage a
virtual environment for you.Make sure you have pipx installed.See/usr/share/doc/python3.12/README.venvfor more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
````pip3 install -r requirements.txt`
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.12/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Hola, pudiste solucionarlo?
Tengo el mismo error
Es necesario crear un entorno virtual de python
primero se debe instalar el paquete para realizar entornos virtuales en python:
sudo apt install python3.12-venv
Una vez instalado, el paquete se crea un entorno virtual de python donde instalaremos los paquetes específicos del cada proyecto, para el caso del ejemplo requirements.txt
python3 -m venv .venv
Luego se activa el entorno virtual
source .venv/bin/activate
y por último en el entorno virtual creado se instalan los paquetes requeridos
python3 -m pip install -r requirements.txt
Estoy repitiendo el curso, pero Fredy tenia una clase de Alias, muy buenas para acortar comandos, no se si lo han visto muy innecesario y no querian hacer el curso muy largo, pero siento que es importante.
Si un comando de Git es muy largo y lo usas frecuentemente, puedes crear un alias para acortarlo.
🔹 1. Crear un alias en Git
Ejecuta este comando para definir un alias en la configuración global de Git:
Tambien se puede crear un subdirectorio PULL_REQUEST_TEMPLATE en la carpeta .github para contener múltiples plantillas de pull requests. El archivo .github/PULL_REQUEST_TEMPLATE.md se aplica por defecto y los archivos dentro de .github/PULL_REQUEST_TEMPLATE/ aparecen como opciones adicionales.
Documentación: Creating a pull request template for your repository - GitHub Docs
El pull request es fundamental en el desarrollo colaborativo porque permite revisar, discutir y aprobar cambios antes de integrarlos al código principal. Fomenta la comunicación entre los miembros del equipo y ayuda a evitar conflictos en el código, asegurando que las contribuciones sean de alta calidad. Además, facilita la documentación de cambios y la trazabilidad del proyecto en GitHub.
acá les paso el texto
## Descripción del Cambio Por favor, proporciona una descripción detallada de los cambios realizados en este PR.
### ¿Cuál es el contexto de este cambio? Explica el contexto y por qué se necesita este cambio. ### ¿Cómo se probaron estos cambios? Describe los pasos que tomaste para probar que los cambios funcionan como se espera.
### ¿Existen tickets relacionados? Vincula cualquier ticket o issue relacionado con este PR.
### Capturas de Pantalla (si aplica) Si los cambios afectan a la interfaz de usuario, por favor adjunta capturas de pantalla.
### Checklist
- [ ] He seguido las convenciones de estilo de código de este repositorio.
- [ ] He añadido pruebas unitarias para los cambios que lo requieren.
- [ ] Todos los tests pasan correctamente.
- [ ] He documentado adecuadamente los cambios en el código.
### Otros Comentarios Agrega cualquier otra información relevante aquí.
No quiero instalar una cantidad de cosas que no voy a usar así que hice todo desde codespaces y quedó melo.
Hola estaba intentando ejecutar este código me daba error
uvicorn app:app --reload
Intenten este código a mi me funciono
python3 -m uvicorn app:app --reload
Por si no tienen instalado python
sudo apt install python3-pip
Que buen video, Gracias Profesor, Gracias Platzi.
No pude desde la terminal (uso Bash y PowerShell), pero si pude desde la terminal de VsCode.
Con tan solo 3 simples pasos:
"Ejecutar archivo de python en terminal"
desde la terminal de VsCode fui a la carpeta de API
cd API
uvicorn app:app --reload
Muy buena clase para ver cómo se conectan ramas, pull requests y plantillas dentro de un flujo real de desarrollo, desde levantar una API hasta documentar los cambios. Me parece clave el mensaje de nunca trabajar directo en main y usar PR bien estructurados para mezclar código, mejorar la revisión en equipo y mantener el proyecto saludable a largo plazo.
🧭 Integración de Git y GitHub en un Proyecto Real
💡 Objetivo General
🧑💻 Facilitar la colaboración en equipo y la gestión de versiones de código.
🔄 Git y GitHub permiten mantener un flujo de trabajo ordenado, seguro y transparente.
🪣 1. Inicio del Proyecto: Crear y Clonar un Repositorio
🚀 Pasos esenciales
1️⃣ Crear un repositorio en GitHub
2️⃣ Añadir un archivo README.md
3️⃣ Clonarlo en tu equipo
4️⃣ Abrirlo en VS Code o tu editor preferido
📁 Estructura recomendada
mkdir .github
touch .github/
✨ El directorio .github guarda plantillas y configuraciones colaborativas.
💡 Consejo: Añade una plantilla para pull requests y estandariza el proceso de colaboración.
🌿 2. Ramas y Commits: Mantén tu Código Organizado
🪴 Por qué usar ramas:
Evitas romper el código principal (main).
Separas tareas o funciones por rama.
Facilitas las revisiones y pruebas.
🧭 Flujo básico de trabajo
git checkout -b mi-nueva-rama ← Crea una nueva rama
git add . ← Prepara los cambios
git commit -m "Implementación de nueva API" ← Registra los cambios
🧩 Tips visuales
🔹 Usa nombres descriptivos → feature/login-api
🔹 Cada commit = un paso claro del desarrollo
🔹 No acumules muchos cambios en un solo commit
🐍 3. Desarrollo y Prueba de una API en Python
🏗️ Estructura sugerida
📂 api/
┣ 📄 app.py → Código principal
┗ 📄 requirements.txt → Dependencias
⚙️ Instala dependencias
pip3 install -r requirements.txt
🚀 Ejecuta la API
uvicorn app:app --reload
✅ Esto lanza tu servidor y te permite probar los endpoints.
🔁 4. Subir Cambios y Crear un Pull Request
📤 Sube tu trabajo
git push -u origin mi-nueva-rama
📝 Crea el Pull Request en GitHub
Abre tu repositorio.
Selecciona tu rama.
Usa la plantilla pull-request-template.md.
Pide revisión antes de fusionar con main.
💬 Los pull requests fomentan la comunicación y la revisión de código.
🧩 5. Consejos Clave para un Buen Flujo
🛡️ Protege la rama main:
Nunca desarrolles directamente sobre ella.
🧱 Usa plantillas:
Para issues y pull requests, mejora la claridad del equipo.
🤝 Promueve la revisión colaborativa:
Ayuda a detectar errores y a compartir conocimiento.
Para aquellos que les dio error al ejecutar el comando python les recomiendo descargar desde su pagina oficial python agregar su extensión en Visual studio code y cuando nuevamente pongan el comando les pedirá crear un entorno especial para python ahi simplemente yo elegí crear un entorno global Python y lo solucione.
from fastapi import FastAPI
app = FastAPI()@app.get("/teams")defread_teams():return{"teams":["Real Madrid","Barcelona","Liverpool"]}@app.get("/players")defread_players():return{"players":["Ronaldo","Falcao","Messi"]}
Actualización desde fastapi 0.111.0, se instala con:
pip install fastapi[standard]
Y para correr el proyecto se ahce con el comando: fastapi dev app.py (nombre del fichero)
El comienzo se entiende, ya me pierdo cuando hace lo de los archivos no entiendo el resto