¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Abrir y fusionar una pull request en Gitea

Después de esta lección: Puedo subir una rama, abrir una pull request en un servidor y fusionarla.

Lección de 60 min13 comandosLaboratorio de Git y Gitea: aprende clone, commit y push en un servidor Git propio

Una pull request en un servidor real

Un equipo guarda su código en un servidor como Gitea o GitHub. Nadie cambia la rama principal directamente. Subes una rama, abres una pull request y un compañero la lee antes.

En esta lección haces todo el recorrido en el Gitea del laboratorio, desde el push hasta la fusión.

Al terminar esta lección

Nota

Puedo subir una rama, abrir una pull request en un servidor y fusionarla.

Palabras clave

PalabraQué significa
Pull requestuna petición para fusionar una rama, con una página de revisión
APIuna forma de que un programa pida algo a un servidor
Fusionableque se fusiona sin ningún conflicto
Commit de fusiónun commit con dos padres que une dos ramas
Rama de seguimientola rama remota enlazada con tu rama

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La rama debe estar antes en el servidor

Una pull request necesita que la rama exista en el servidor, así que la subes. Git no puede abrir la propuesta por ti.

Primero crea un repositorio en Gitea. Un programa puede hacerlo llamando a su API. La opción -u de git push enlaza tu rama con su gemela remota, la rama de seguimiento. La contraseña del laboratorio es pública, así que aquí puedes escribirla en una dirección. Nunca lo hagas con una contraseña real.

Crea un repositorio en Gitea

Comando
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"name":"cafeteria-revision","auto_init":true,"default_branch":"main"}' http://gitea:3000/api/v1/user/repos

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Clónalo

Comando
git clone http://student:student@gitea:3000/student/cafeteria-revision.git

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Empieza una rama para el cambio

Comando
git -C cafeteria-revision switch -c precio-te

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Añade una línea al README

Comando
printf 'El te cuesta 2 euros desde el lunes.\n' >> cafeteria-revision/README.md

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Guarda el cambio

Comando
git -C cafeteria-revision commit -am "Indicar el precio del te"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sube la rama

Comando
git -C cafeteria-revision push -u origin precio-te

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Abre la pull request y revísala

Pulsa New Pull Request en la página del repositorio, o pregunta a la API, que es lo que hace el botón. El servidor calcula entonces si la rama es fusionable.

Quien revisa lee el diff y escribe comentarios. Gitea no deja aprobar tu propio cambio, así que aquí comentas. En un equipo, un compañero aprueba.

Abre la pull request

Comando
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"title":"Indicar el precio del te","head":"precio-te","base":"main","body":"El te cuesta 2 euros desde el lunes."}' http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pregunta si se fusiona sin conflicto

Comando
curl -s http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls/1 | grep -o '"mergeable":[a-z]*'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe un comentario de revisión

Comando
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"body":"Me parece correcto."}' http://gitea:3000/api/v1/repos/student/cafeteria-revision/issues/1/comments

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lee el diff como quien revisa

Comando
curl -s http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls/1.diff

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

La fusión ocurre en el servidor

Cuando termina la revisión, alguien pulsa Merge. El servidor crea un commit de fusión en main. Tu ordenador todavía no lo sabe.

Por eso ejecutas git fetch, que descarga las novedades sin cambiar tus archivos. Después lees el historial de origin/main, la copia que Git guarda de la rama del servidor.

Fusiona la pull request

Comando
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"Do":"merge"}' http://gitea:3000/api/v1/repos/student/cafeteria-revision/pulls/1/merge

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Descarga las novedades

Comando
git -C cafeteria-revision fetch

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Dibuja el historial de main en el servidor

Comando
git -C cafeteria-revision --no-pager log --graph --format=%s origin/main

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que fusionar una pull request cambia los archivos de su propio ordenador. No es así. La fusión ocurre en el servidor. Ejecuta git fetch para verla, y después cambia a main y ejecuta git pull para traerla a tu propia main.

Sobre este laboratorio y su código: Laboratorio de Git y Gitea: aprende clone, commit y push en un servidor Git propio

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.