Tengo un servidor que estoy quitando. Lo único que me queda por migrar es mi repositorio. Este servidor aparece como el origen (maestro) de uno de mis proyectos. ¿Cuál es la forma correcta de mover el repositorio para mantener el historial?
264
Respuestas:
Para agregar la nueva ubicación del repositorio,
Luego empuje el contenido a la nueva ubicación
Finalmente quita el viejo
Después de eso, puede hacer lo que dijo bdonlan y editar el archivo git / config para cambiar el nuevo nombre_poder a origen. Si no elimina el origen (repositorio remoto original), simplemente puede empujar los cambios al nuevo repositorio con
fuente
git push -u new_repo_name --all
.git remote rename new_repo_name origin
Si desea migrar todas las ramas y etiquetas, debe usar los siguientes comandos:
para clonar el antiguo repositorio con todas las ramas
configurar un nuevo control remoto
para empujar todas las referencias bajo referencias / cabezas (que es probablemente lo que quieres)
fuente
--tags
yrefs/heads/*:refs/heads/*
no es compatible con él--mirror
. stackoverflow.com/a/26552740/1484831 funcionó bien.refs/heads/refs/heads
utilizandogit push -f --tags remoteName refs/heads/*:refs/heads/*
así que he cambiado agit push remoteName --mirror
push
También apoya--mirror
.git clone --mirror; cd repo; git push --mirror new_remote
debería hacer el trucoEsto funcionó para mí sin problemas .
Sin embargo, debo mencionar que esto crea un espejo de su repositorio actual y luego lo empuja a la nueva ubicación. Por lo tanto, esto puede tomar algún tiempo para repositorios grandes o conexiones lentas .
fuente
git push --mirror origin
sobre-f
.Cópialo de nuevo. Es realmente así de simple. :)
En el lado del cliente, solo edite .git / config en el repositorio local del cliente para apuntar sus controles remotos a la nueva URL según sea necesario.
fuente
Esto se hace en partes en algunas de las otras respuestas.
fuente
--mirror
en el empuje es muy importante: esta debería ser la respuesta correctagit init --bare
Solo vuelvo a publicar lo que otros han dicho, en una lista de instrucciones simple de seguir.
Mueva el repositorio: simplemente inicie sesión en el nuevo servidor,
cd
en el directorio principal donde ahora desea mantener el repositorio, y usersync
para copiar desde el servidor anterior:Hacer que los clientes apunten al nuevo repositorio: ahora, en cada cliente que use el repositorio, simplemente quite el puntero al origen anterior y agregue uno al nuevo.
fuente
git remote set-url origin [email protected]:path/to/repository.git
Echa un vistazo a esta receta en GitHub: https://help.github.com/articles/importing-an-external-git-repository
Probé varios métodos antes de descubrir
git push --mirror
.¡Trabajado como un encanto!
fuente
git clone --mirror ...
,git remote add ...
,git push --mirror ...
Seguí las instrucciones en BitBucket para mover un repositorio con todas sus ramas allí. Aquí vienen los pasos con explicaciones que siguen al
#
personaje:Funcionó muy bien para mí.
fuente
Por favor siga los pasos:
fuente
Esta es una variación de esta respuesta , actualmente sugerida por gitlab para "migrar" un repositorio git de un servidor a otro.
Supongamos que se llama a su antiguo proyecto
existing_repo
, almacenado en unaexisting_repo
carpeta.Crea un repositorio en tu nuevo servidor. Asumiremos que la url de ese nuevo proyecto es
git@newserver:newproject.git
Abra una interfaz de línea de comandos e ingrese lo siguiente:
Los beneficios de este enfoque es que no elimina la rama que corresponde a su antiguo servidor.
fuente
Puede usar el siguiente comando:
Ejemplo de http://gitref.org/remotes/
fuente
Debería ser tan simple como:
De esta manera, mantienes el nombre
origin
de tu nuevo repositorio, luego empujas al nuevo repositorio, el antiguo como se detalla en las otras respuestas. Supongamos que trabaja solo y tiene un repositorio local que desea reflejar con todo su contenido en él, también podría hacerlo (desde dentro de su repositorio local)pero vea ¿Es "git push --mirror" suficiente para hacer una copia de seguridad de mi repositorio? (en general, no use,
--mirror
pero una vez).fuente
siga estas instrucciones si desea mantener todos los commits y ramas del repositorio antiguo al nuevo
fuente
Puede usar git-copy para duplicar el repositorio con todas las historias.
fuente
Si desea pasar de un origen a otro y también mantener una copia de seguridad de su origen actual en su máquina local, puede seguir estos pasos:
Ahora en la carpeta hacer
El comando anterior proporciona la URL de origen remota actual, útil para volver a establecer el origen en el último paso
El comando anterior establece el origen remoto en la nueva ubicación
El comando anterior empuja la rama local activa actual a remota con el desarrollo de nombre de rama. Por supuesto, conserva toda la historia, ya que con git también se empuja toda la historia.
El comando anterior restablece el origen remoto a su origen actual: desea esto porque está en su carpeta existente y probablemente no desee mezclar el nombre de su carpeta local actual con la nueva carpeta que va a crear para clonar el repositorio acabas de empujar.
Espero que esto ayude,
fuente
Si desea migrar un repositorio #git de un servidor a uno nuevo, puede hacerlo así:
Todas las ramas y etiquetas remotas del antiguo repositorio se copiarán en el nuevo repositorio.
Ejecutando este comando solo:
solo copiaría una rama maestra (solo ramas de seguimiento) al nuevo repositorio.
fuente