Migrar un repositorio Git a un servidor nuevo – Traslado a GitLab o GitHub

Cuando quieres trasladar un repositorio Git existente a un servidor nuevo, es habitual preguntarse cómo funciona técnicamente la migración y qué aspectos debes tener en cuenta. Esto resulta especialmente importante cuando el servidor antiguo ya no está disponible o has perdido el acceso, por ejemplo al cambiar de un servidor GitLab autoalojado a GitLab.com o GitHub.

En este artículo explico paso a paso cómo funciona la migración, qué comandos Git son importantes y en qué casos cambia el procedimiento. También describo problemas habituales, alternativas y respuestas a preguntas frecuentes.

¿Cuándo es necesaria una migración?

Situaciones habituales:

  • El servidor Git antiguo ya no está disponible.
  • Solo conservas un repositorio local en el ordenador o el servidor.
  • El servidor antiguo ya no te pertenece, por ejemplo tras cambiar de empresa.
  • Un proyecto debe trasladarse de forma centralizada a GitLab.com o GitHub.
  • Quieres consolidar varios repositorios.

En estas situaciones debes saber si todavía dispones de todos los datos antiguos o únicamente de una copia local correspondiente a la última clonación.

Qué debes tener en cuenta durante el traslado

Antes de migrar un repositorio Git, comprueba estos puntos:

  • ¿Todavía tienes acceso al servidor antiguo?
    Si es así, puedes usar git push --mirror y transferir realmente todo.
  • ¿Solo conservas una copia local?
    En ese caso solo puedes transferir las ramas y etiquetas disponibles localmente.
  • ¿Se utilizaron merge requests, issues, wikis o pipelines?
    Estos datos no forman parte del repositorio y no pueden transferirse mediante Git.
  • GitLab y GitHub solo transfieren datos Git mediante git push, keine Server-Metadaten.

Crear un proyecto nuevo en el servidor de destino

Tanto si utilizas GitLab como GitHub, primero debes crear un proyecto nuevo y vacío.

GitLab

  • Abrir el grupo
  • « New project »
  • « Create blank project »
  • Desactiva « Initialize repository with a README » si quieres realizar una migración
    (de lo contrario, se producirá un conflicto durante el push)

GitHub

  • Repositories
  • « New »
  • Elegir « Repository name »
  • No crear README ni .gitignore
  • Crear el repositorio

Transferir el repositorio Git al servidor nuevo

1. Comprobar si existe un remote origin antiguo

git remote -v

2. Establecer la URL remota del proyecto nuevo

git remote set-url origin <NEUE-URL>

Ejemplo para GitLab:

https://gitlab.com/benutzer/projekt.git

Ejemplo para GitHub:

https://github.com/benutzer/projekt.git

3. Transferir todas las ramas locales

Si el servidor antiguo ya no está disponible:

git push -u origin --all #alternativ kann auch git push --mirror origin verwendet werden

Este comando transfiere:

  • todas las ramas locales
  • incluidas master o main
  • y configura el seguimiento para futuros pushs

4. Transferir las etiquetas

Si el proyecto utilizaba etiquetas:

git push origin --tags

Tabla: diferencias entre los principales comandos git push

ComandoFunciónRecomendación
git push --mirror originCopia todas las ramas, etiquetas, configuraciones remotas y referenciasUtilizar solo si el servidor antiguo sigue disponible
git push -u origin --allTransfiere todas las ramas localesMétodo estándar para migrar sin el servidor antiguo
git push origin --tagsTransfiere todas las etiquetasEjecutar después del push de las ramas
git push -f originFuerza la sobrescritura de la rama de destinoSolo si hay conflictos con un repositorio de destino vacío
git remote set-url origin <URL>Cambia la dirección remotaPaso principal de la migración

Migración a GitLab o GitHub

TemaGitLabGitHub
Iniciar el proyecto sin READMEPosiblePosible
Funciones de importación en la interfaz webMuy completasCompletas, pero menos que en GitLab
Transferencia de issuesNo, salvo mediante API o exportacionesNo
Comandos push idénticosSíSí
Migración de LFSCompatibleCompatible

En la práctica no hay grandes diferencias, ya que ambas plataformas admiten Git de forma nativa. La migración utiliza los mismos comandos en ambas.

Diferencias entre GitHub y GitLab

Aunque GitHub y GitLab parecen muy similares a primera vista y ambos funcionan perfectamente como servidores Git, existen diferencias que pueden ser relevantes al migrar un repositorio o trabajar a largo plazo. Muchos principiantes se preguntan si trasladarse a GitHub funciona de forma distinta que hacerlo a GitLab o si faltan determinadas funciones. La buena noticia es que los comandos Git son idénticos en ambas plataformas, aunque estas difieren claramente en algunos aspectos.

Resumen de las diferencias principales

ÁreaGitHubGitLab
EnfoqueLa mayor plataforma de desarrollo del mundo, muy orientada a la comunidadPlataforma DevOps con CI/CD y gestión de proyectos integrados
Repositorios privadosGratuitos, pero con funciones limitadasGratuitos y con numerosas funciones, también para equipos
CI/CDGitHub Actions, muy flexibleGitLab CI/CD integrado de forma nativa
Estructura de proyectosEstructura plana centrada en repositoriosPotente estructura de grupos y subgrupos
Gestión de issuesSencilla y claraMás completa, con tableros, epics y hojas de ruta
WikisPor repositorioPor proyecto, con más funciones de administración
Herramientas de importaciónBuenas, pero menos completas que las de GitLabFunciones de importación muy completas para GitHub, Bitbucket, Jira, etc.
AutoalojamientoGitHub Enterprise, caroGitLab puede autoalojarse por completo; Community Edition es gratuita
Gestión de permisosSencillaMuy detallada y basada en roles
Almacenamiento gratuitoLimitado para LFSMás espacio gratuito para repositorios y el registro de contenedores

¿Qué sistema resulta más adecuado para cada uso?

GitHub es ideal si:

  • inicias un proyecto de código abierto
  • quieres incluir a muchos desarrolladores externos
  • buscas una gran comunidad y muchas integraciones listas para usar
  • quieres utilizar GitHub Actions

GitLab es ideal si:

  • buscas una solución DevOps completa
  • quieres organizar muchos proyectos en grupos
  • necesitas autoalojamiento o un control total
  • quieres utilizar CI/CD sin herramientas adicionales

Diferencias durante la migración

Para migrar el repositorio Git apenas importa si utilizas GitHub o GitLab, ya que ambos admiten los mismos estándares de Git. Las diferencias se encuentran principalmente en el entorno:

  • GitHub crea automáticamente la rama main, GitLab solo lo hace de forma opcional.
  • Después del push, GitLab muestra automáticamente indicaciones para crear merge requests.
  • GitHub da más importancia a las pull requests que a las merge requests.
  • GitLab admite repositorios espejo de forma nativa; GitHub requiere automatización o Actions.
  • GitLab ofrece completos asistentes de importación para transferir proyectos de GitHub con sus issues.

Recomendaciones y buenas prácticas

  • ¿Proyecto público o privado? Defínelo previamente en el proyecto de destino.
  • ¿Clave SSH o HTTPS? SSH evita introducir contraseñas constantemente.
  • Comprueba las ramas locales antes de subirlas.
  • Elimina previamente las ramas antiguas que ya no sean necesarias.
  • Después del push, comprueba que todas las ramas y etiquetas se hayan transferido correctamente.

FAQ

¿Puedo transferir issues, merge requests o contenidos de la wiki?

No. Estos datos se encuentran en el servidor y no en el repositorio Git. Solo pueden migrarse mediante exportaciones o API.

¿Qué ocurre si el proyecto de destino ya contiene archivos?

Se producirán conflictos. Lo mejor es crear el proyecto de destino completamente vacío.

¿Qué ocurre con las ramas antiguas que existían en el servidor pero no localmente?

Se perderán si ya no tienes acceso al servidor antiguo.

¿Tengo que cambiar el nombre de la rama master a main?

No. GitLab y GitHub aceptan ambos nombres.

Este artículo ha sido traducido con ayuda de IA.

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll to Top