Esta pequeña guía está centrada en enseñar a utilizar el fork y crear pull-requests para la entrega de Trabajos Prácticos fuera de término.
Primero vamos a ver qué es cada uno y luego el cómo se hacen.
En GitHub, un fork es una manera de hacer una copia de un repositorio en la cuenta del usuario. Esto es útil para cuando queramos entregar trabajos fuera del plazo de entrega.
Los Pull-request son solicitudes de cambio hechas por los colaboradores para solicitar cambios dentro de una rama. Estas solicitudes muestran las diferencias entre el contenido de la rama de origen y el contenido de la rama de destino.
Luego de la fecha de entrega establecida para cada práctico, los repositorios se cierran y no se admiten nuevos commits, por lo que podemos hacer un fork del repositorio, hacer las correcciones y luego hacer un Pull-Request para que puedan ser corregidas por el docente.
Primero nos vamos a dirigir al repositorio que queramos copiar a nuestra cuenta. Una vez allí vamos a ir al botón que dice "Fork":
Esto nos redirige al apartado de creación del fork. Acá se nos explica brevemente en qué consiste y podemos cambiar el nombre, la descripción y el dueño del fork (puede ser más de uno).
Con todo esto armado, podemos crear la copia y automáticamente GitHub nos va a llevar al nuevo repositorio.
Podemos trabajar en las copias de dos formas
Con el repositorio ya creado, solamente resta clonarlo en una nueva carpeta y comenzar a trabajar en él. Como es una copia, los commits y los pushes no van a ir al repositorio original. En todo caso, podemos verificarlo usando el comando en Bash
git remote -vEste comando nos va a devolver la siguiente salida
origin https://github.com/usuario/nombre-repositorio-forkeado.git (fetch)
origin https://github.com/usuario/nombre-repositorio-forkeado.git (push)
Otra forma de trabajar con nuestro fork es tomando la carpeta donde estábamos trabajando antes de que se cierre el repositorio y cambiarle la URL donde van nuestros cambios.
- Para esto tenemos que abrir Bash en la carpeta donde estamos trabajando.
- Luego vamos a nuestro fork y copiamos la URL para poder trabajar en ella.
Una vez copiado, volvemos al Bash y ponemos el siguiente comando con nuestra URL:
git remote set-url origin https://github.com/usuario/nombre-repositorio-forkeado.gitAhora verificamos si se cambió la dirección
git remote -vEsperando el Output:
origin https://github.com/usuario/nombre-repositorio-forkeado.git (fetch)
origin https://github.com/usuario/nombre-repositorio-forkeado.git (push)
Con cualquiera de los dos métodos, ya podemos empezar a subir nuestros commits y pushes al fork.
Para hacer un Pull-Request tenemos que ir a la pestaña con el mismo nombre dentro de nuestro repositorio.
Acá vamos a crear un nuevo Pull-Request
Después, clickeamos en compare across forks
Vamos a ver que nos salen las opciones base repository base: main y head repository compare: main:
- En la primera opción vamos a seleccionar el nombre del repositorio original
- En head repository seleccionamos el nombre de nuestro fork
Debajo van a aparecer todos los commits que hicimos y el botón de "Create pull request"
Creamos el Pull-Request y lo subimos.

Luego de todo eso, pueden cargar el repositorio en el formulario de entrega (no olviden aclarar que la entrega es en un Pull request separado)
Y listo, así de sencillo es hacer un Pull-Request en GitHub.
Hacer la entrega con el formulario con la dirección del repositorio en el que creamos el PR.
Es posible que el repositorio original reciba cambios después de que hiciste tu fork. Para mantener tu fork actualizado y evitar conflictos, es recomendable sincronizarlo periódicamente con el repositorio original. Aquí tienes los pasos para hacerlo:
Aunque esto es raro en el contexto del uso que le damos a git y GitHub, es interesante tenerlo en cuenta ya que posibilita que utilicemos esta mecánica para sumar contribuciones a cualquier otro repositorio de la plataforma.
-
Agregar el repositorio original como remoto
Abre una terminal en la carpeta de tu fork y ejecuta:
git remote add upstream https://github.com/OWNER_ORIGINAL/REPO_ORIGINAL.git
Reemplaza OWNER_ORIGINAL y REPO_ORIGINAL por el usuario y nombre del repositorio original.
Puedes verificar que se agregó correctamente con:
git remote -vDeberías ver algo como:
origin https://github.com/tu_usuario/tu_fork.git (fetch)
origin https://github.com/tu_usuario/tu_fork.git (push)
upstream https://github.com/OWNER_ORIGINAL/REPO_ORIGINAL.git (fetch)
upstream https://github.com/OWNER_ORIGINAL/REPO_ORIGINAL.git (push)
-
Traer los cambios del repositorio original
Ejecuta:
git fetch upstream- Fusionar los cambios en tu rama principal
Cambia a tu rama principal (usualmente llamada main):
git checkout mainFusiona los cambios del repositorio original:
git merge upstream/mainSi hay conflictos, Git te lo indicará y deberás resolverlos antes de continuar.
Subir los cambios a tu fork en GitHub
Finalmente, sube los cambios a tu fork:
git push origin main¡Listo! Así mantienes tu fork actualizado con el repositorio original. Se recomienda hacerlo antes de comenzar nuevas tareas o antes de crear un Pull Request.
@gonabur a quien armó la base de este apunte.
Se aceptan pull requests


