| # | Sección |
|---|---|
| 1 | ¿Qué es una pull request? |
| 2 | Crear una pull request |
| 3 | La revisión de código |
| 4 | Fusionar una pull request |
| 5 | Buenas prácticas de PR |
| 6 | Quiz — Las pull requests |
| 7 | Práctica — Abrir y fusionar una PR |
| 8 | Síntesis |
Una pull request (PR), también llamada merge request en GitLab, es una solicitud de integración: «aquí está mi trabajo en una rama, por favor reléelo y luego fusiónalo en main». Es el punto de encuentro entre el código y el equipo.
Una PR no es solo un botón «fusionar». Es un espacio de discusión alrededor del código: comentarios, sugerencias, tests automáticos, validación. Ahí se juega la calidad.
| Una PR sirve para… | En concreto |
|---|---|
| Hacer releer el código | Un compañero detecta bugs y mejoras |
| Disparar la CI | Tests + build automáticos sobre la rama |
| Documentar el cambio | Título + descripción explican el «por qué» |
| Trazar la decisión | Quién aprobó, cuándo, por qué |
Antes de abrir una PR, hay que haber empujado su rama a GitHub.
Etapa 1 — Empujar la rama:
git switch feature/recherche
git push -u origin feature/rechercheEtapa 2 — Abrir la PR (dos opciones):
main) y la rama comparada (feature/recherche).# Crea la PR sin salir del terminal
gh pr create --base main --head feature/recherche \
--title "Ajout de la recherche" \
--body "Implémente la barre de recherche avec filtres."Una buena descripción de PR contiene:
| Sección | Contenido |
|---|---|
| Qué | Lo que hace la PR en una frase |
| Por qué | El problema o necesidad resuelta |
| Cómo probar | Etapas para verificar |
| Enlace | Número de la issue ligada (ej. Closes #42) |
El título y la descripción los leen humanos con prisa. Sé explícito: «Corrige el crash al login» vale mil veces más que «fix bug».
🔧 Mini-ejercicio — Desde la rama actual feature/recherche, crea una pull request hacia main con gh, dando un título claro.
gh pr create --base main --head feature/recherche \
--title "Ajout de la recherche" --body "Implémente la barre de recherche."La revisión de código (code review) es el corazón de la PR: uno o varios compañeros leen las modificaciones, hacen preguntas, sugieren mejoras y acaban por aprobar o pedir cambios.
Los tres veredictos posibles en GitHub:
| Veredicto | Significado |
|---|---|
| Approve | El código está bien, se puede fusionar |
| Request changes | Hacen falta correcciones antes de fusionar |
| Comment | Observaciones sin bloquear ni aprobar |
Del lado del autor, tras los comentarios, se corrige y se vuelve a empujar: la PR se actualiza sola.
# Corregir tras la revisión
git switch feature/recherche
# ... modificaciones ...
git commit -am "Prise en compte des retours de revue"
git push # la PR se actualiza solaLo que mira un buen reviewer:
La revisión de código no es un juicio de la persona, sino una mejora colectiva del producto. Se critica el código, nunca al autor. Y también se destaca lo que está bien hecho.
Una vez la PR aprobada y la CI en verde, se fusiona. GitHub propone tres métodos, que cambian la forma del historial.
| Método | Lo que hace | Cuándo usarlo |
|---|---|---|
| Create a merge commit | Crea un commit de fusión, conserva todos los commits de la rama | Trazar la rama entera |
| Squash and merge | Aplasta todos los commits en uno solo limpio | Historial main claro y conciso |
| Rebase and merge | Reproduce los commits sobre main, sin commit de fusión | Historial estrictamente lineal |
# Fusionar desde el terminal con GitHub CLI
gh pr merge 42 --squash --delete-branchTras la fusión, se limpia:
# Borrar la rama remota (a menudo automático)
git push origin --delete feature/recherche
# Actualizar el local
git switch main
git pull origin main
# Borrar la rama local
git branch -d feature/rechercheEl squash and merge es muy popular: una funcionalidad = un commit limpio en
main. El historial se vuelve una lista legible de funcionalidades, y no un revoltijo de «wip», «fix typo», «oups».
🔧 Mini-ejercicio — Con gh, fusiona la PR número 42 en squash y borra la rama de paso. Escribe el comando.
gh pr merge 42 --squash --delete-branch
Una PR eficaz es una PR pequeña, clara y testeada. Estas son las costumbres de los equipos performantes.
| Buena práctica | Por qué |
|---|---|
| PR pequeñas (< 400 líneas) | Más fáciles y más rápidas de releer |
| Una PR = un tema | Sin mezclar «feature + refactor + typo» |
| Título + descripción claros | El reviewer entiende sin adivinar |
Ligar la issue (Closes #N) | Traza la necesidad y cierra la issue al fusionar |
| CI verde antes de pedir la revisión | No se hace releer código roto |
| Responder a todos los comentarios | Nada queda sin respuesta |
# Ligar automáticamente una issue en la descripción
gh pr create --title "Ajout export CSV" \
--body "Permet d'exporter les données en CSV. Closes #57"Una PR de 1 000 líneas recibe un «LGTM» (looks good to me) sin una relectura de verdad — nadie tiene el valor de leerlo todo. Una PR de 50 líneas recibe devoluciones valiosas. Pequeño = releído en serio.
🔧 Mini-ejercicio — ¿Qué palabra clave añades en la descripción de una PR para cerrar automáticamente la issue #57 al fusionar?
Closes #57 (las variantes Fixes #57 o Resolves #57 también funcionan).
¿Para qué sirve una pull request?
a) Para borrar una rama
b) Para pedir la relectura y la integración de una rama en otra
c) Para instalar Git
d) Para clonar un repositorio
✅ Respuesta: b) — Una PR pide la relectura del código de una rama y luego su fusión (a menudo en main).
¿Qué hay que hacer antes de poder abrir una PR en GitHub?
a) Borrar main
b) Empujar su rama al repositorio remoto (git push)
c) Cerrar el terminal
d) Desactivar la CI
✅ Respuesta: b) — La rama debe existir en el remoto; se empuja con git push -u origin nom-de-branche.
¿Qué significa «Request changes» durante una revisión?
a) El código está aprobado
b) Hacen falta correcciones antes de la fusión
c) Se borra la PR
d) Se crea un repositorio nuevo
✅ Respuesta: b) — El reviewer pide modificaciones; el autor corrige y vuelve a empujar, lo que actualiza la PR.
¿Qué método de fusión aplasta todos los commits de la rama en uno solo?
a) Create a merge commit
b) Squash and merge
c) Rebase and merge
d) Cherry-pick
✅ Respuesta: b) — Squash and merge condensa todos los commits en un solo commit limpio en main.
¿Por qué privilegiar las pull requests pequeñas?
a) Consumen menos disco
b) Se releen más rápido y con más seriedad
c) GitHub las hace obligatorias
d) Evitan escribir tests
✅ Respuesta: b) — Una PR pequeña se relee con atención y rapidez; una PR enorme suele recibir un «LGTM» sin una relectura de verdad.
main).git push) antes de abrir la PR.main.Has terminado una funcionalidad en la rama feature/footer. Realiza el ciclo completo de una pull request con GitHub CLI (gh):
main con un título claro y un enlace de issue (Closes #12).# 1. Empujar la rama
git switch feature/footer
git push -u origin feature/footer
# 2. Abrir la pull request
gh pr create --base main --head feature/footer \
--title "Ajout du pied de page du site" \
--body "Ajoute un footer responsive avec liens et mentions légales. Closes #12"
# 3. Tras la aprobación: fusión en squash + borrado de la rama
gh pr merge --squash --delete-branch
# 4. Actualizar el local
git switch main
git pull origin main
git branch -d feature/footerResultado esperado:
| Etapa | Verificación |
|---|---|
| PR creada | gh pr list muestra la PR abierta hacia main |
| Issue ligada | La descripción contiene Closes #12 (cerrará la issue al fusionar) |
| Fusión squash | Un solo commit «Ajout du pied de page du site» aparece en main |
| Rama borrada | git branch ya no lista feature/footer |
$ git log --oneline -1
a1b2c3d Ajout du pied de page du site (#13)El número entre paréntesis (
#13) lo añade GitHub automáticamente: es el número de la PR. Hacer clic lleva a toda la discusión de revisión. Trazabilidad total.
gh pr create.Dominas el ciclo de contribución en tu repositorio. La lección 04 — Flujo de trabajo colaborativo abre la colaboración más amplia: fork, clone, issues y buenas prácticas de equipo.
Todos los derechos reservados. Toda reproducción, difusión, uso o adaptación de este curso, en todo o en parte, está estrictamente prohibida sin la autorización escrita previa del Dr. Haythem REHOUMA.
Curso creado por Dr. Haythem REHOUMA — Desarrollo y despliegue de soluciones de datos