¿Cómo se bifurca tu propio repositorio en GitHub?

164

Tengo un repositorio público en GitHub. Quiero replicarlo / copiarlo y trabajar en un nuevo proyecto basado en este repositorio, pero no quiero afectar cómo está ahora. Traté de bifurcarlo usando la interfaz de usuario de GitHub pero no hizo nada.

WowBow
fuente
44
¿Qué es exactamente lo que estás tratando de lograr? ¿Quizás puedas resolverlo simplemente ramificando?
Artefact2
44
Quiero obtener una copia del proyecto y extender ese proyecto para hacer otra cosa pero sin afectar el proyecto original. Eso fue todo. De cualquier manera, está resuelto.
WowBow
1
@ Artefact2 .. Lo siento, pensé que la solución de mcepl resolvió mi necesidad, pero no fue así. Después de clonar el proyecto usando 'git clone', no quiero apuntar al repositorio original sino a un nuevo repositorio en github que creé. ¿Cómo puedo lograr eso?
WowBow
1
@ Artefact2 ¿Recibiste mis preguntas?
WowBow
1
El beneficio de fork en comparación con la creación de un nuevo repositorio es que los gráficos y el historial de la red están vinculados entre sí. Es una pena que Github no permita esto.
kenchew

Respuestas:

205

No creo que puedas bifurcar tu propio repositorio.
Clonarlo y llevarlo a un nuevo repositorio es bueno, pero debes:

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(ver git push)

Vea todo el proceso descrito en " Bifurcar su propio proyecto en GitHub ".


Seis años después (2016), ahora tiene el importador de GitHub que le permite importar un repositorio de otra fuente ... incluido GitHub.
Consulte " Importación de un repositorio con GitHub Importer "

https://help.github.com/assets/images/help/importer/import-repository.png

narf 's respuesta (upvoted) también ilustran que proceso.

Eso le permitirá crear un nuevo repositorio e importar el historial completo del antiguo en el nuevo, utilizando su URL de GitHub.

Una vez más: lo que obtienes es una copia, no una bifurcación real: no puedes hacer una solicitud de extracción del nuevo repositorio al anterior.

Nuevamente (bis), como se indica en los comentarios de mpersico, esto no es un VERDADERO HORQUILLA.

Si tengo un foo que es el repositorio de fuente canónica para un proyecto de código abierto que quiero que otras personas bifurquen y tengan acceso para hacer relaciones públicas, entonces no quiero trabajar en ese repositorio, quiero un tenedor que pueda usar para emitir relaciones públicas adecuadas contra mi proyecto.
He resuelto esto creando una segunda cuenta en GitHub y bifurcando eso.

VonC
fuente
Gracias @VonC. Creo que olvidó mencionar la edición del archivo de configuración.
WowBow
1
Estaba hablando de .git / config. A menos que cambie la URL de origen, cuando diga "git remote add ....", lo rechazará porque el nombre de origen ya existe. Pero una vez que cambié la url en el archivo de configuración, funciona bien. El artículo que me señaló me lo muestra.
WowBow
77
@WowBow si remoteya existe, entonces a git remote set-url origin https://github.com/userName/New_Repo. Eso cambiará el .git/configarchivo por ti. Ver git-scm.com/docs/git-remote
VonC
1
@aus que se espera, para que puedas buscarlo desde arriba. Ver stackoverflow.com/a/33360766/6309
VonC
1
Todavía siento que debería permitirse la bifurcación del repositorio en la misma organización. ¿Qué sucede si hay un repositorio central que es genérico para todos y desea obtener actualizaciones de él todo el tiempo y al mismo tiempo hacer cambios específicos en su copia bifurcada según sus necesidades?
Prachi
107

Una forma súper fácil de hacerlo en 30 segundos desde el sitio web de GitHub:

  1. Copie la URL de su repositorio. Ej: https://github.com/YourName/YourOldRepo(pista: es la URL cuando miras la página principal de tu repositorio en github.
  2. Haz clic en el +ícono en la esquina superior derecha.
    https://i.stack.imgur.com/9zJgo.png
  3. Seleccione "Importar repositorio".
  4. Cuando solicite la "URL anterior", pegue la URL que copió en el paso 1
    https://i.stack.imgur.com/vgWd3.png
  5. Ingrese el nombre de su nuevo repositorio y haga clic Begin Import.
  6. ¡Eso es! ¡Ahora tiene una copia del repositorio completo, con todo el historial de confirmaciones y ramas!

Limitaciones: en realidad no es un tenedor real. Es una copia del repositorio. No permitirá hacer solicitudes de extracción de un lado a otro.

narF
fuente
44
Olvidé el Importador de GitHub (lanzado en 2016) en mi antigua respuesta de 2010: he agregado una referencia a esa herramienta y a tu respuesta.
VonC
4

Simplemente clónelo, cree un nuevo repositorio en blanco y empújelo.

mcepl
fuente
1
Gracias. Estaba pensando demasiado
WowBow
Lo cloné en mi máquina local y creé un repositorio en blanco pero, cuando trato de obtener el origen github.com/userName/New_Repo.git ... dice que el origen remoto ya existe. ¿Cómo debería resolver eso?
WowBow
Y ahora, cuando presiono, está cambiando el repositorio original.
WowBow
¿Me puede decir cómo empujar al nuevo repositorio? Hice el clon y creé un nuevo repositorio, pero no pude empujar al nuevo repositorio.
WowBow
55
Tienes que cambiar los controles remotos. De lo contrario, intentará empujar a la misma ubicación. git remote rm originseguido degit remote add origin URL-to-new-repository
wadesworld
1

Seguí estas instrucciones oficiales para "Duplicar un repositorio" y parecía funcionar.

https://help.github.com/articles/duplicating-a-repository/

Para crear un duplicado de un repositorio sin bifurcación, debe ejecutar un comando de clonación especial contra el repositorio original y empujar en espejo al nuevo. Esto funciona con cualquier repositorio de git, no solo los alojados en GitHub.

phocks
fuente
1

La solución aceptada de VonC, desafortunadamente, no funcionó para mí.

remoto: repositorio no encontrado

Lo que funcionó fue lo siguiente:

  1. Crea un nuevo_repo en github
  2. git clone new_repo
  3. cd new_repo
  4. git remote add upstream old_repo.git
  5. git pull maestro aguas arriba
  6. maestro de origen git push

Obtuve todo lo anterior desde aquí .

Mella
fuente
1

Para los no expertos en tecnología que usan GitHub, aquí hay una solución simple como alternativa a otras excelentes respuestas anteriores. Lo que necesita es solo una aplicación de escritorio GitHub.

  1. Abra su propio repositorio de proyectos desde el navegador y descárguelo como un archivo zip, por ejemplo your-project-master.zip.
  2. Descomprime y renómbralo como tu nuevo repositorio.
  3. Abra GitHub Desktop y agregue su nuevo repositorio navegándolo a su nuevo repositorio de ruta local descomprimido. ingrese la descripción de la imagen aquí
  4. Publíquelo en su github haciendo clic en el botón publicar. No olvides agregar el nombre y la descripción :)
Zuzu Softman
fuente
-1

Solo intenté esto, y funcionó:

  1. Bifurca tu repositorio en una cuenta de organización
  2. Renombrarlo
  3. Transfiere la propiedad a ti mismo
Dominykas Blyžė
fuente
44
Buena idea pero me acaba de intentar esto y consiguieron un error: aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spires
Esto se debe a que ahora tienen redireccionamientos después de cambiar el nombre o transferir sus repositorios github.com/blog/1508-repository-redirects-are-here
shadowbq
-1

Cuando crea un nuevo repositorio, puede importar desde otro repositorio con la url de repositorio .git. Me tomó 30 segundos.

Gino
fuente