Mover el contenido del repositorio Git a otro repositorio preservando el historial

Resuelto Mario asked hace 11 años • 15 respuestas

Estoy intentando mover solo el contenido de un repositorio ( repo1) a otro repositorio existente ( repo2) usando los siguientes comandos:

git clone repo1
git clone repo2
cd repo1
git remote rm origin
git remote add repo1
git push

Pero no funciona. Revisé una publicación similar, pero solo encontré una que movía la carpeta, no el contenido.

Mario avatar Jun 29 '13 01:06 Mario
Aceptado

Creo que los comandos que estás buscando son:

cd repo2
git checkout master
git remote add r1remote **url-of-repo1**
git fetch r1remote
git merge r1remote/master --allow-unrelated-histories
git remote rm r1remote

Después de eso repo2/mastercontendrá todo lo relacionado con repo2/mastery repo1/mastery también tendrá la historia de ambos.

Chronial avatar Jun 28 '2013 20:06 Chronial

Perfectamente descrito aquí https://www.smashingmagazine.com/2014/05/moving-git-repository-new-server/

Primero, tenemos que buscar todas las ramas y etiquetas remotas del repositorio existente en nuestro índice local:

git fetch origin

Podemos comprobar si faltan ramas de las que necesitemos crear una copia local:

git branch -a

Usemos la URL clonada por SSH de nuestro nuevo repositorio para crear un nuevo control remoto en nuestro repositorio local existente:

git remote add new-origin [email protected]:manakor/manascope.git

Ahora estamos listos para enviar todas las ramas y etiquetas locales al nuevo control remoto llamado new-origin:

git push --all new-origin 
git push --tags new-origin

Hagamos de nuevo origen el control remoto predeterminado:

git remote rm origin

Cambie el nombre de nuevo origen a solo origen, para que se convierta en el control remoto predeterminado:

git remote rename new-origin origin
Sergey Onishchenko avatar Jul 11 '2016 09:07 Sergey Onishchenko

Si está buscando preservar las ramas existentes y confirmar el historial, esta es una forma que funcionó para mí.

git clone --mirror https://github.com/account/repo.git cloned-repo
cd cloned-repo
git push --mirror {URL of new (empty) repo}

# at this point only remote cloned-repo is correct, local has auto-generated repo structure with folders such as "branches" or "refs"
cd ..
rm -rf cloned-repo
git clone {URL of new (empty) repo}
# only now will you see the expected user-generated contents in local cloned-repo folder

# note: all non-master branches are avaialable, but git branch will not show them until you git checkout each of them
# to automatically checkout all remote branches use this loop:
for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done

Ahora, supongamos que desea mantener sincronizados los repositorios de origen y destino durante un período de tiempo. Por ejemplo, todavía hay actividad dentro del repositorio remoto actual que desea trasladar al repositorio nuevo o de reemplazo.

git clone -o old https://github.com/account/repo.git my-repo
cd my-repo
git remote add new {URL of new repo}

Para desplegar las últimas actualizaciones (suponiendo que no tenga cambios locales):

git checkout {branch(es) of interest}
git pull old
git push --all new

NB: todavía tengo que usar submódulos, por lo que no sé qué pasos adicionales podrían ser necesarios si los tiene.

Dan Cohn avatar Mar 28 '2017 18:03 Dan Cohn

Esto funcionó para mover mi repositorio local (incluido el historial) a mi repositorio remoto de github.com. Después de crear el nuevo repositorio vacío en GitHub.com, uso la URL en el paso tres a continuación y funciona muy bien.

git clone --mirror <url_of_old_repo>
cd <name_of_old_repo>
git remote add new-origin <url_of_new_repo>
git push new-origin --mirror

Encontré esto en: https://gist.github.com/niksumeiko/8972566

raddevus avatar Aug 25 '2017 21:08 raddevus

Duplicar un repositorio

Según la respuesta de @ Dan-Cohn, Mirror-push es tu amigo aquí. Esta es mi opción para migrar repositorios:

1.Abra Git Bash.

2.Cree un clon simple del repositorio.

$ git clone --bare https://github.com/exampleuser/old-repository.git

3. Empuje en espejo al nuevo repositorio.

$ cd old-repository.git
$ git push --mirror https://github.com/exampleuser/new-repository.git

4.Elimine el repositorio local temporal que creó en el paso 1.

$ cd ..
$ rm -rf old-repository.git

Referencia y crédito: https://help.github.com/en/articles/duplicating-a-repository

DalSoft avatar Apr 29 '2019 16:04 DalSoft