¿Cómo duplicar un repositorio de git? (sin bifurcar)
117
Tengo dos repositorios y necesito copiar todo uno en el otro vacío que tiene diferentes niveles de acceso al primero. La copia y el repositorio madre no deben estar vinculados.
Soy nuevo en git y sería genial si alguien pudiera ayudarme con esto.
No estoy seguro, pero supongo que podría clonarlo y luego usar git config remote.origin.url git: //new.url/proj.git para configurar el remote.origin a su nuevo representante.
Rufinus
Ya, el enlace que acabo de publicar hace algo así.
Para hacer un duplicado exacto, debe realizar tanto un clon desnudo como un mirror-push:
mkdir foo; cd foo
# move to a scratch dir
git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository
cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository
cd ..
rm -rf old-repository.git
# Remove our temporary local repository
NOTA: lo anterior funcionará bien con cualquier repositorio de git remoto, las instrucciones no son específicas de github
Lo anterior crea una nueva copia remota del repositorio. Luego clónalo en tu máquina de trabajo.
¿Qué sucede si los repositorios antiguo y nuevo tienen el mismo nombre (no la misma URL de git)? Como en, simplemente Jeremy.gitJeremy.git
cloné
Este no será un duplicado exacto. Los problemas no se transferirán.
Slam
¿Conserva esto la historia?
Thomas
@Thomas Acabo de hacer esto y sí, conservó toda mi historia en la copia. Tenga en cuenta que después de presionar y hacer cd en el nuevo repositorio, todavía no hay nada allí porque presionó el control remoto, por lo que debe hacer un tirón
PfunnyGuy
7
Para que esta respuesta funcione con GitHub, primero se debe crear el nuevo repositorio en GitHub.
¿Cómo instalas gem en primer lugar? Esta parece la solución más sencilla. ¡Voto a favor!
saran3h
Por lo general, es parte de una instalación de Ruby. En Ubuntu sí sudo apt install ruby.
daño
10
Si está copiando a GitHub, puede usar el Importador de GitHub para hacerlo por usted. El repositorio original puede ser incluso de otros sistemas de control de versiones.
Esto funciona perfectamente e incluso mantiene la historia - debería tener una votación más alta
John D
1
Estoy de acuerdo. Este enfoque es mucho más intuitivo, se puede hacer completamente dentro de la GUI de Github y no implica ninguna de esas tonterías confusas de la línea de comandos. Pasos: 1) En la GUI, cree el nuevo repositorio pero no haga clic en la casilla de verificación etiquetada "Inicializar este repositorio con un README". Después de hacer esto, Github le presentará una nueva página y una opción etiquetada "... o importar código desde otro repositorio ". ¡Eso es!
Luke F.
5
Si solo desea crear un nuevo repositorio utilizando todos o la mayoría de los archivos de uno existente (es decir, como una especie de plantilla), creo que el enfoque más fácil es crear un nuevo repositorio con el nombre deseado, etc., clonarlo para su escritorio, luego simplemente agregue los archivos y carpetas que desee en él.
No obtienes todo el historial, etc., pero probablemente no quieras eso en este caso.
Probé tu enfoque. Y recibí este mensaje de error:! [remoto rechazado] maestro -> maestro (gancho de pre-recepción rechazado) y varios otros mensajes similares. El último fue: error: no se pudieron presionar algunas referencias ¿Cómo puedo corregir eso?
Respuestas:
Ver https://help.github.com/articles/duplicating-a-repository
Version corta:
Para hacer un duplicado exacto, debe realizar tanto un clon desnudo como un mirror-push:
NOTA: lo anterior funcionará bien con cualquier repositorio de git remoto, las instrucciones no son específicas de github
Lo anterior crea una nueva copia remota del repositorio. Luego clónalo en tu máquina de trabajo.
fuente
Jeremy.git
Jeremy.git
También puede usar git-copy .
Instálalo con Gem,
Luego
fuente
sudo apt install ruby
.Si está copiando a GitHub, puede usar el Importador de GitHub para hacerlo por usted. El repositorio original puede ser incluso de otros sistemas de control de versiones.
fuente
Si solo desea crear un nuevo repositorio utilizando todos o la mayoría de los archivos de uno existente (es decir, como una especie de plantilla), creo que el enfoque más fácil es crear un nuevo repositorio con el nombre deseado, etc., clonarlo para su escritorio, luego simplemente agregue los archivos y carpetas que desee en él.
No obtienes todo el historial, etc., pero probablemente no quieras eso en este caso.
fuente
Terminal abierta.
Crea un clon desnudo del repositorio.
cd old-repository.git
fuente