remote - ¿Git push repo existente a un servidor de repositorio remoto nuevo y diferente?
git push origin master (8)
Digamos que tengo un repositorio en git.fedorahosted.org y quiero clonar esto en mi cuenta en github para tener mi propio patio de recreo, aparte del repo más "oficial" en fedorahosted. ¿Cuáles serían los pasos para copiarlo inicialmente? Dentro de github hay un bonito botón de "bifurcación", pero no puedo usar esto por razones obvias.
¿Y cómo podría hacer un seguimiento de los cambios en el repositorio de fedorahosted en el github?
- Crear un nuevo repositorio en github.
- Clone el repositorio de fedorahosted a su máquina local.
git remote rename origin upstream
-
git remote add origin URL_TO_GITHUB_REPO
-
git push origin master
Ahora puedes trabajar con él como cualquier otro repositorio de github. Para obtener parches desde el nivel superior, simplemente ejecute git pull upstream master && git push origin master
.
¿Realmente desea simplemente enviar su repositorio local (con sus sucursales locales, etc.) al nuevo control remoto o realmente desea reflejar el control remoto antiguo (con todas sus sucursales, etiquetas, etc.) en el nuevo control remoto? Si este último es un gran blog sobre Cómo reflejar correctamente un repositorio de git .
Le recomiendo que lea el blog para conocer algunos detalles muy importantes, pero la versión corta es la siguiente:
En un nuevo directorio ejecute estos comandos:
git clone --mirror [email protected]/upstream-repository.git
cd upstream-repository.git
git push --mirror [email protected]/new-location.git
Encontré una solución usando set-url que es concisa y bastante fácil de entender :
- crear un nuevo repositorio en Github
-
cd
en el repositorio existente en su máquina local (si aún no lo ha clonado, haga esto primero) -
git remote set-url origin https://github.com/user/example.git
-
git push -u origin master
Hay una respuesta eliminada en esta pregunta que tenía un enlace útil: https://help.github.com/articles/duplicating-a-repository
La esencia es
0. create the new empty repository (say, on github)
1. make a bare clone of the repository in some temporary location
2. change to the temporary location
3. perform a mirror-push to the new repository
4. change to another location and delete the temporary location
Ejemplo de OP:
En su maquina local
$ cd $HOME
$ git clone --bare https://git.fedorahosted.org/the/path/to/my_repo.git
$ cd my_repo.git
$ git push --mirror https://github.com/my_username/my_repo.git
$ cd ..
$ rm -rf my_repo.git
He tenido el mismo problema.
En mi caso, ya que tengo el repositorio original en mi máquina local, he hecho una copia en una nueva carpeta sin ningún archivo oculto (.git, .gitignore).
Finalmente, agregué el archivo .gitignore a la nueva carpeta creada.
Luego, he creado y agregado el nuevo repositorio desde la ruta local (en mi caso utilizando GitHub Desktop).
Para empujar su repositorio existente en diferente, necesita:
Clona el repo original primero.
git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
Empuje las fuentes clonadas a su nuevo repositorio:
cd rhq git push https://github.com/user/example master:master
Puede cambiar de master:master
a source:destination
rama de source:destination
.
Si desea empujar un commit específico (rama), entonces haga:
En el repositorio original, crea y verifica una nueva rama:
git checkout -b new_branch
Elija y restablezca el punto con el que desea comenzar:
git log # Find the interesting hash git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard
Alternativamente, seleccione el commit by
git cherry-pick
para agregarlo a HEAD existente.Luego empuja a tu nuevo repositorio:
git push https://github.com/user/example new_branch:master
Si está rebasando, use
-f
para forzar empuje (no recomendado). Ejecutegit reflog
para ver el historial de cambios.
Prueba esto Cómo mover un repositorio Git completo
Cree un repositorio local en el directorio temp-dir usando:
git clon temp-dir
Entra en el directorio temp-dir.
Para ver una lista de las diferentes sucursales en ORI hacer:
git branch -a
Verifique todas las ramas que desea copiar de ORI a NUEVO usando:
git checkout branch-name
Ahora recupera todas las etiquetas de ORI usando:
git fetch --tags
Antes de realizar el siguiente paso, asegúrese de verificar sus etiquetas y ramas locales usando los siguientes comandos:
git tag git branch -a
Ahora borre el enlace al repositorio de ORI con el siguiente comando:
git remote rm origin
Ahora vincule su repositorio local a su NUEVO repositorio creado con el siguiente comando:
git remote add origin <url to NEW repo>
Ahora empuja todas tus ramas y etiquetas con estos comandos:
git push origin --all git push --tags
Ahora tiene una copia completa de su repositorio de ORI.
Si tienes un repositorio de Git existente:
cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/newproject
git push -u origin --all
git push -u origin --tags