Eliminar la dependencia de la bifurcación de un repositorio de GitHub

206

¿Cómo puedo hacer que GitHub olvide o disocie que mi repositorio era originalmente una bifurcación de otro proyecto?

Bifurqué un proyecto en GitHub. Ahora puedo ver "bifurcado de lo que sea / lo que sea". El repositorio principal "whatever / whatever" ya no se mantiene. Se me permitió continuar usando el código base del repositorio original para crear un repositorio independiente.

¿Hay alguna manera de separar mi proyecto del repositorio original?

Mick
fuente

Respuestas:

175

Puede ponerse en contacto con el soporte de github y pedirles que cambien su repositorio al "modo normal".

En esta página , el párrafo "El compromiso se hizo en una bifurcación", se explica que uno tiene que pasar por el soporte para cambiar. Por lo tanto, es probable que no haya forma de hacerlo usted mismo (a menos que destruya y vuelva a crear su repositorio que se explicó anteriormente ... si lo hace, tenga cuidado si tiene entradas o un wiki adjunto a su proyecto como lo harán ser eliminado!).

Thomas Moulard
fuente
31
Puedo confirmar que ponerse en contacto con Soporte funciona perfectamente, además de que a menudo responden en cuestión de horas :-)
BenC
1
La página vinculada ya no contiene la información indicada.
Kara Brightwell
3
@MattBrennan La página cambió pero la última sección aún incluye: "Para separar la bifurcación y convertirla en un repositorio independiente en GitHub.com o GitHub Enterprise, comuníquese con el soporte de GitHub o el administrador de su sitio, respectivamente".
Thomas Moulard
1
Súper rápido ... me respondieron en 1 hora. Gracias
myDoggyWritesCode
2
En Github Enterprise puede encontrarlo ahora en admin-> Collaboration-> Network y, según su caso de uso, debe usar 'Make Root', 'Detach' o 'Extract'.
Kutzi
45

Puede duplicar el repositorio bifurcado en un nuevo repositorio (sin la dependencia de la bifurcación) de la interfaz de usuario de github, luego eliminar el bifurcado original:

  • Inicia sesión en github
  • Seleccione el signo + en la esquina superior derecha e Importar repositorio .
  • Importa tu repositorio bifurcado. El nuevo repositorio no tendrá la dependencia fork.
  • Elimine el repositorio original bifurcado en la configuración del repositorio.
Juuso Ohtonen
fuente
1
Esto fue lo más fácil y lo que funcionó para mí :). Muy inteligente.
moxi
1
¿Alguien más ha tenido un problema con la función de importación "colgando"? El mío ha estado en "Detectando el sistema de control de versiones de su proyecto ..." durante aproximadamente 5 horas. No estoy seguro de si me están haciendo cola o es un bloqueo real. El repositorio es pequeño. Tentado a dejarlo toda la noche en caso de que esté en una fila.
Benjamin West
Finalmente tuve curiosidad y solo hice clic en "cancelar". Al hacer clic en cancelar, se pudo omitir la detección de VCS e importar el código / commits / ramas, etc. Este fue el caso al importar Github -> Github. ¿Es posible que la importación no se haya bloqueado si venía de un VCS diferente? No estoy seguro. También tenga en cuenta que al hacer esto con un segundo repositorio, tuve que cancelar dos veces para que funcione. Si CLI copia todos los mismos datos que podrían ser un mejor método, pero espero que esto ayude a otros que eligieron esta ruta.
Benjamin West
9
Para ser claros, este enfoque no preservará los problemas y las solicitudes de extracción.
golopot
Funciona como encanto! Gracias eres un salvavidas! :)
omnimind
44

Asegúrese de tener todas las ramas y etiquetas importantes en su repositorio local, elimine el repositorio de github, vuelva a crear el repositorio por los medios habituales (sin bifurcación) y empuje el repositorio local con git push --all. Tenga en cuenta que si tiene sucursales locales que no desea publicar, podría valer la pena crear un clon local limpio temporal para la operación.

Sin embargo, esto también eliminará la wiki y los problemas. Como el wiki es, de hecho, su propio repositorio, puede manejarse de manera similar clonándolo y luego recreándolo y empujándolo. La dirección del repositorio está en la página de acceso Git de wiki ( [email protected]:user/repo.wiki.git).

Esto deja problemas. Se pueden exportar a través de la API , pero que yo sepa, solo puede crear problemas y comentarios con su persona, por lo que es imposible importarlos perfectamente.

Entonces, si necesita preservar los problemas, debe pasar por el soporte de github como sugiere Thomas Moulard.

Tapio
fuente
Dependiendo de cuántos problemas haya, podría ser posible transferirlos uno por uno al nuevo repositorio antes de eliminarlos del antiguo de la web ( help.github.com/en/github/managing-your-work-on- github / ... ). Supongo que un individuo determinado podría transferir más de 100 problemas por hora, no es divertido, pero para muchos repositorios es algo factible.
Suma
22

Obtuve el problema similar y terminé usando esta página de ayuda de github para resolverlo. No me importó el wiki y el rastreador de problemas, ya que era para mi blog usando un tema desarrollado amablemente por otro usuario.

Para separar un repositorio bifurcado y usarlo como propio después de varias confirmaciones sin perder todo el historial:

git clone --bare [email protected]:user/forked_repo.git

Cree una nueva reposidad vacía new-repositoryen el sitio web de github. Y empuje una versión reflejada:

cd user.github.com.git/

git push --mirror [email protected]:user/new-repository.git

Se puede cambiar el nombre en github, forked_repositorycon otro nombre para mantenerlo como copia de seguridad y verificar actualizaciones si es necesario. O simplemente elimínelo.

Cambiar el nombre new-repositoryal nombre original hace el trabajo. Como efecto secundario, sus confirmaciones ahora aparecen en su historial.

aurelien
fuente
11

Esto solo se aplica a GitHub Enterprise, no a github.com

Inició sesión en una cuenta que tiene privilegios de administrador:

  1. Vaya al repositorio que necesita separar: https://<ghe url>/<org>/<repo>
  2. Haga clic en el cohete "Administrador del sitio" en la esquina superior derecha
  3. Haga clic en "Colaboración" en la barra de menú superior
  4. Haga clic en "Red" en el panel izquierdo
  5. Haga clic en "Crear raíz" en el panel Estructura de red
  6. Aceptar

Esto fue probado en GitHub Enterprise 2.9

Antonio O.
fuente
Dependiendo de su caso de uso, 'Separar' o 'Extraer' podría ser más apropiado. Encuentro 'Make Root' un poco extraño ya que básicamente invertirá la dirección actual raíz-> hijo. (Github Enterprise 2.17)
Kutzi
10

Usando la información de aurelien y Clayton , pude hacer esto con lo siguiente:

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

Aquí está la documentación paragit clone --bare :

Haz un repositorio de Git desnudo. Es decir, en lugar de crear <directory>y colocar los archivos administrativos <directory>/.git, haga el <directory>propio $GIT_DIR. Obviamente, esto implica -n porque no hay ningún lugar para ver el árbol de trabajo. Además, las cabeceras de sucursal en el control remoto se copian directamente en las cabeceras de sucursal locales correspondientes, sin asignarlas refs/remotes/origin/. Cuando se utiliza esta opción, no se crean ramas de seguimiento remoto ni las variables de configuración relacionadas.

Aquí está la documentación paragit push --mirror :

En lugar de nombrar cada árbitro de empuje, especifica que todas las refs bajo refs/(que incluye pero no se limita a refs/heads/, refs/remotes/y refs/tags/) pueden reflejar al repositorio remoto. Las referencias locales recién creadas se enviarán al extremo remoto, las referencias actualizadas localmente se actualizarán a la fuerza en el extremo remoto y las referencias eliminadas se eliminarán del extremo remoto. Este es el valor predeterminado si se establece la opción de remote.<remote>.mirrorconfiguración.

Nota: al igual que las otras gitrespuestas basadas, esto no copiará los problemas que no forman parte del gitrepositorio, como la wiki y los problemas. Por Tapio:

  • El wiki es un repositorio de git separado y se puede manejar de manera similar por Tapio. La dirección es: [email protected]:user/repo.wiki.git.
  • Los problemas se pueden exportar a través de la API de GitHub, pero hay problemas para recrearlos, ya que solo pueden ser creados por su usuario, por lo que las importaciones perderán información.
Grokify
fuente