¿Git empuja el repositorio existente a un servidor de repositorio remoto nuevo y diferente?

5 minutos de lectura

¿Git empuja el repositorio existente a un servidor de repositorio
heiko rupp

Digamos que tengo un repositorio en git.fedorahosted.org y quiero clonar esto en mi cuenta en github para tener mi propio patio de juegos además del repositorio más “oficial” en fedorahosted. ¿Cuáles serían los pasos para copiar eso inicialmente? Dentro de github hay este bonito botón de “bifurcación”, pero no puedo usarlo por razones obvias.

¿Y cómo rastrearía los cambios en el repositorio alojado en fedora en el de github?

¿Git empuja el repositorio existente a un servidor de repositorio
troelskn

  1. Cree un nuevo repositorio en github.
  2. Clone el repositorio de fedorahosted a su máquina local.
  3. git remote rename origin upstream
  4. git remote add origin URL_TO_GITHUB_REPO
  5. git push origin master

Ahora puede trabajar con él como cualquier otro repositorio de github. Para extraer parches de upstream, simplemente ejecute git pull upstream master && git push origin master.

  • No hay razón para cambiar el nombre del origen original, simplemente llame al nuevo patio de recreo de otra manera.

    – tacoswell

    2 de agosto de 2013 a las 3:18

  • @tcaswell Técnicamente no, pero es una convención fuerte que origin apunta a la ubicación remota canónica. En este caso, la ubicación de github presumiblemente sería la canónica.

    – troelskn

    11 de agosto de 2013 a las 10:27

  • Tal vez debería publicar una pregunta diferente, pero creo que ustedes están discutiendo lo que quiero. Me gustaría agregar un nuevo control remoto, no reemplazar el existente para poder continuar extrayendo del repositorio anterior pero enviar cualquier cambio al nuevo.

    – Eso no funciona

    15/09/2014 a las 20:56

  • @ThatAintWorking Probablemente debería abrir una nueva pregunta, pero en resumen, puede agregar cualquier cantidad de controles remotos con el comando git remote add. Luego puede empujar a uno de ellos indicando explícitamente el control remoto en git push. P.ej git push foobar master para empujar la rama actual a master en remoto foobar.

    – troelskn

    16 de septiembre de 2014 a las 10:49

  • No empujé todas mis ramas, solo amo. La respuesta del espejo funcionó para todas las sucursales.

    – usuario1114

    22 de agosto de 2019 a las 21:57

1646971033 286 ¿Git empuja el repositorio existente a un servidor de repositorio
multitud

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 máquina 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

  • ¿Cuál es el beneficio del clon desnudo y el espejo empujado simplemente agregando y empujando a otro control remoto? ¿Es que se empujarán todas las ramas y no solo la rama actual? (Si es así, esto parece una limitación de la respuesta aceptada que debe tenerse en cuenta).

    – yoyó

    21 de julio de 2016 a las 0:38

  • Esta era exactamente la información que estaba buscando, ¡el –bare / –mirror suele ser lo que la gente quiere realizar! ¡Esta es una respuesta importante! Gracias

    – clave

    13 de septiembre de 2016 a las 9:06

  • ¡Genial! Definitivamente la respuesta más correcta sobre la pregunta del tema. ¡Gracias! Si no lo hago así, siempre obtengo error: failed to push some refs to 'https://github.com/username/testrep.git'

    – Denis Babarykin

    29 de diciembre de 2017 a las 0:43

1646971034 243 ¿Git empuja el repositorio existente a un servidor de repositorio
kenorb

Para convertir su repositorio existente en diferente, necesita:

  1. Clona primero el repositorio original.

    git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
    
  2. Empuje las fuentes clonadas a su nuevo repositorio:

    cd rhq
    git push https://github.com/user/example master:master
    

puedes cambiar master:master dentro source:destination rama.


Si desea enviar una confirmación específica (rama), haga lo siguiente:

  1. En el repositorio original, crea y verifica una nueva rama:

    git checkout -b new_branch
    
  2. Elija y restablezca el punto con el que desea comenzar:

    git log # Find the interesting hash
    git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard
    

    Alternativamente, seleccione la confirmación por git cherry-pick para añadir a HEAD existente.

  3. Luego empuje a su nuevo repositorio:

    git push https://github.com/user/example new_branch:master
    

    Si está rebasando, use -f para empuje forzado (no recomendado). Correr git reflog para ver el historial de cambios.

  • los git push ... old_branch_name:new_branch_name le permite insertar una rama de características del repositorio anterior como la rama principal en el nuevo repositorio. ¡Útil!

    – Gorjanz

    25 de julio de 2018 a las 8:29


  • Esta fue la forma más sencilla para mí de hacerlo.

    – Adán

    4 de noviembre de 2019 a las 23:38

Si tiene un repositorio 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

Encontré una solución usando establecer URL cual es conciso y bastante fácil de entender:

  1. crear un nuevo repositorio en Github
  2. cd en el repositorio existente en su máquina local (si aún no lo ha clonado, haga esto primero)
  3. git remote set-url origin https://github.com/user/example.git
  4. git push -u origin master

¿Realmente desea simplemente enviar su repositorio local (con sus sucursales locales, etc.) al nuevo control remoto o realmente desea duplicar el antiguo control remoto (con todas sus sucursales, etiquetas, etc.) en el nuevo control remoto? Si esto último aquí hay un gran blog sobre Cómo duplicar correctamente un repositorio de git.

Le recomiendo encarecidamente que lea el blog para conocer algunos detalles muy importantes, pero la versión corta es esta:

En un nuevo directorio, ejecute estos comandos:

git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git

1646971036 892 ¿Git empuja el repositorio existente a un servidor de repositorio
Abdel Ourimchi

Simplemente señale el nuevo repositorio cambiando la URL del repositorio GIT con este comando:

git remote set-url origin [new repo URL]

Ejemplo: git remote set-url origin git@bitbucket.org:Batman/batmanRepoName.git

Ahora, empujar y tirar están vinculados al nuevo REPO.

Luego presione normalmente así:

git push -u origin master

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad