5 Repositorio upstream
Como sabes, cada estudiante tiene su propio repositorio de GitHub para el código de estas prácticas. Pero en algunas ocasiones, los profesores retocaremos el material docente: código fuente de PDRouter, nuevos escenarios, nuevos scripts, etc. Para distribuir estas actualizaciones usaremos un segundo repositorio.
5.1 Los dos repositorios
Queremos el repositorio de cada estudiante tenga dos remotos:
origin: es el repositorio propio del estudiante. Es donde trabaja habitualmente, guardando su trabajo de cada día.upstream: es el repositorio oficial del curso. Contiene las actualizaciones que publican los profesores de vez en cuando.
Es terminología habitual en Git: origin suele identificar nuestro repositorio de trabajo y upstream el repositorio original o principal del que procede el código.
5.2 Instrucciones para el primer día
Cuando tengas tu repositorio de trabajo configurado (origin), tendrás que añadir el repositorio upstream. Eso basta con hacerlo una sola vez.
cd ~/pst2
git remote add upstream https://github.com/maop72/pst2-upstream.gitPara comprobar que todo está bien configurado, el comando
git remote -vDebe mostrar algo como esto
origin https://github.com/miusuario/pst2.git (fetch)
origin https://github.com/miusuario/pst2.git (push)
upstream https://github.com/maop72/pst2-upstream.git (fetch)
upstream https://github.com/maop72/pst2-upstream.git (push)Esto significa que, en principio, podrías bajar y subir cambios tanto desde/a origin como desde/a upstream. Aunque en realidad no tienes permiso para subir cambios a upstream, solo bajarlos.
A continuación descarga la información del repositorio oficial:
git fetch upstreamFinalmente incorpora sus cambios a tu repositorio:
git merge upstream/main --allow-unrelated-histories -X theirsUna vez realizada la actualización, publica el resultado.
git push5.3 Instrucciones para días posteriores
Cuando los profesores publiquemos nuevas modificaciones en upstream, ya no es necesario que vuelvas a configurar el remoto.
Simplemente ejecuta:
cd ~/pst2
git fetch upstream
git merge upstream/main
git pushgit fetch upstream descarga las nuevas modificaciones, pero no modifica tu código.
git merge upstream/main incorpora esas modificaciones a tu rama main, conservando tu propio trabajo.
Finalmente, git push publica en tu repositorio de GitHub el resultado de la actualización.
5.4 Resumen
5.4.1 Primer día
cd ~/pst2
git remote add upstream git@github.com:maop72/pst2-upstream.git
git fetch upstream
git merge upstream/main --allow-unrelated-histories -X theirs
git push5.4.2 Días posteriores
cd ~/pst2
git fetch upstream
git merge upstream/main
git push