DEV Community

Cover image for Mantener actualizada una copia de repositorio
Javier Ledezma
Javier Ledezma

Posted on • Edited on • Originally published at blog.javierledezma.com

Mantener actualizada una copia de repositorio

Si eres un contruibuidor activo de algún proyecto open source te darás cuenta de que éste después de que algún pull request es aceptado, éste no se sincroniza atomáticamente con la copia de tu proyecto, lamentablemente éste proceso debe realizarse de manera manual, pero no te preocupes en este blog te enseñaremos a hacerlo.

Nota: Un repositorio es un espacio en el que se almacenan los archivos de un proyecto. En git un repositorio está represantado con una URL.

El proceso se resume en 3 pasos:

  1. Registrar el respositorio original como fuente de datos.
  2. Obtener los cambios del repositorio original.
  3. Combinar ramas entre repositorios.
  4. Subir los cambios.

1. Registrar el respositorio original como fuente de datos.

Al realizar el clon de algún proyecto, por default tendrémos registrado una fuente de origen, esta fuente apuntará a la url del respositorio situado en nuestra cuenta. Podemos asegurarnos de ello ejecutando el comando:

git remote -v
Enter fullscreen mode Exit fullscreen mode

Esto mostrará algo similar a lo siguiente:

origin URL_REPOSTORIO (fetch)
origin URL_REPOSTORIO (push)
Enter fullscreen mode Exit fullscreen mode

En dónde la salida del comando se compone de 3 elementos:

  • NOMBRE_FUENTE Es un nombre que nosotros le indicamos a git para poder utilizar esta fuente de datos.
  • URL_REPOSITORIO Es la url en la cuál se encuentra guardada el repositorio.
  • TIPO_ACCION Determina que tipos de "movimiento" puede tener esa fuente. Solo existen 2 tipos de acción: descarga ( fetch) y subida (push).

La manera de lograr sincronizar nuestro proyecto con el proyecto original, es agregar la url del repositorio como una fuente de datos adicional. Ésto se logra con la ayuda del comando:

git remote add NOMBRE_FUENTE URL_REPOSITORIO_ORIGINAL
Enter fullscreen mode Exit fullscreen mode

Nota: El NOMBRE_FUENTE puede ser cualquier cosa, sin embargo, por convención suelen utilizarse las palabras origin para hacer referencia a la URL de nuestro repositorio y upstream para la url del repositorio original.

Al ejecutar esta línea agregamos una nueva fuente de datos a nuestro repositorio, podemos consultar los cambios ejecutando nuevamente:

git remote -v
Enter fullscreen mode Exit fullscreen mode

Obteniendo algo similar a:

origin      URL_REPOSITORIO (fetch)
origin      URL_REPOSITORIO (push)
upstream    URL_REPOSITORIO_ORIGINAL (fetch)
upstream    URL_REPOSITORIO_ORIGINAL (push)
Enter fullscreen mode Exit fullscreen mode

2. Obtener los cambios más reciente del repositorio original.

Nota, éste proceso se puede llevar a cabo en cualquier rama del proyecto, sin emabrgo, se recomienda realizrlo sobre la rama principal (usualmente master) para obtener los últimos cambios estables del proyecto.

Si necesitas cambiar a la rama principal, utiliza el comando git checkout master

Una vez que tenemos una fuente adicional de datos, podemos utilizar el NOMBRE_FUENTE para obtener los cambios más recientes de cualquiera de nuestros repositorios, por defecto git utilizará el repositorio de origen, pero podemos cambiarlo al específicarlo como primer argumento del comando fetch:

git fetch NOMBRE_FUENTE
Enter fullscreen mode Exit fullscreen mode

Esto descargará las referencias del repositorio original sobre NOMBRE_FUENTE/RAMA_ACTUAL. Es decir, que los archivos aún no estarán actualizados en nuestro proyecto, para aplicar los cambios índicados en las referencias de NOMBRE_FUENTE/RAMA_ACTUAL debemos combinar las ramas.

3. Combinar ramas entre repositorios.

Para combinar las ramas, basta con ejecutar un solo comando:

git merge NOMBRE_FUENTE/NOMNRE_RAMA
Enter fullscreen mode Exit fullscreen mode

Nota: Este proceso no suele marcar ningún error, dado que los cambios que subiste ya fueron previamente aprobados. Pero en caso de tener algún problema, te recomiendo revisar si existen cambios locales en tu proyecto posterior a tu PR, en caso de haberlos deberías deshacerlos antes y/o crear un nuevo pull request con los cambios.

4. Subir los cambios.

Finalmente debemos subir todos los cambios a nuestro repositorio:

git push
Enter fullscreen mode Exit fullscreen mode

Nota: si al hacer push marca conflictos, esto quiere decir que el proyecto original modificó la historia de git, por ende, tendrás que forzar los cambios con: git push --force

Conclusión

Cómo se mencionó en un inicio, el proceso de sincronización de repositorios no es de manera automática, en realidad ésto tiene muchas ventajas cuando eres contribuidor ya que no tienes que preocupate por los cambios del repositorio hasta que logras terminar tus cambios y/o hasta que necesitas hacer más cambios sobre el proyecto.

Espero que esta guía te haya servido y si tienes algún comentario o duda, siente con libertad de expresarla en los comentarios.

Top comments (2)

Collapse
 
jcolombo profile image
Juan Colombo

Genial!,hay poco contenido en español sobre open-source,o por lo menos lo que yo pude encontrar por lo que se agradece tus aportes,Conoces alguna comunidad sobre Open-Source en español?

Collapse
 
javleds profile image
Javier Ledezma

Gracias por tu comentario, Juan! No estoy seguro si hay de open source, pero puedes buscar la comunidad de tu lenguaje favorito más la el país de residencia, por ejemplo:

node Argentina
PHP Mexico
Go Colombia

Casi todos tienen un canal en Slack o in grupo en Facebook. En ellos publican sus proyectos y no dudo que te puedas involucrar.