Mover todo un repositorio de Git

Publicado por Alejandro Villalobos Vázquez el

GitMover Repositorio

A veces he tenido la necesidad de mover todo mi código de un repositorio Git a otro, no es una tarea realmente complicada, pero puedes volverte loco si no realizas los pasos adecuados.

En este artículo os presento una pequeña guía de cómo moví el código fuente de uno de mis proyectos personales hosteado en Gitlab a Bitbucket, preservando todas las ramas, etiquetas e historial de commits.

Para este ejemplo voy a usar el repositorio actual de JUnit5 publicado en GitHub como repositorio de origen. Ten en cuenta que necesitarás cambiar los repositorios usados en este ejemplo con las URLs de tus propios repositorios.

1. Clonar el repositorio completo

git clone --mirror https://github.com/junit-team/junit5.git

Una vez realizado este paso (tras entrar en el directorio recién creado) podrás comprobar que poseemos todas las ramas de forma local usando el siguiente comando:

git branch -a

También puedes comprobar que todas las etiquetas están en nuestro repositorio local escribiendo:

git tag

2. Cambiar nuestro repositorio remoto

Primero, vamos a asegurarnos que nuestro repositorio local está apuntando al antiguo repositorio listando los repositorios remotos asociados:

git remote -v

origin    https://github.com/junit-team/junit5.git (fetch)  
origin    https://github.com/junit-team/junit5.git (push)  

Luego, simplemente, eliminaremos el repositorio remoto usando:

git remote rm origin

... Y volveremos a enlazar nuestro repositorio local con el nuevo remoto:

git remote add origin https://avillalobos@mycompany.com/newrepo.git

Ahora confirmameros que nuestro repositorio local está enlazado correctamente con el nuevo repositorio remoto listando de nuevo los repositorios remotos asociados:

git remote -v

origin    https://avillalobos@mycompany.com/newrepo.git (fetch)  
origin    https://avillalobos@mycompany.com/newrepo.git (push)  

3. Enviar los datos de nuestro repositorio local al nuevo repositorio remoto

Ahora que hemos visto que nuestro repositorio local está correctamente enlazado al nuevo repositorio remoto, es hora de enviar los datos a su nuevo hogar ;)

Primero, enviaremos el contenido de todas las ramas locales al nuevo repositorio usando el siguiente comando:

git push origin --all

Por último, enviaremos también todos las etiquetas que tenemos en el repositorio local:

git push origin --tags

Con esto, hemos conseguido migrar todo el contenido de un repositorio a otro preservando todo el histórico de commits, ramas y etiquetas. ¡Bien hecho!

Si te ha gustado el artículo, ¡síguenos en Twitter!

Este artículo fue originalmente publicado en LinkedIn

Autor

Alejandro Villalobos Vázquez

Actualmente me paso las horas buceando dentro del ecosistema Atlassian como miembro del Centro Experto Atlassian en knowmad mood. ¿Quieres saber más sobre mí? ¡Escríbeme!