Mover el contenido del repositorio Git a otro repositorio preservando el historial
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.
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/master
contendrá todo lo relacionado con repo2/master
y repo1/master
y también tendrá la historia de ambos.
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
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.
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
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