¿Cómo creo un nuevo repository de GitHub desde una sucursal en un repository existente?

Tengo twigs maestras y de proyectos nuevos . Y ahora me gustaría crear un repository nuevo con su maestro basado en la twig de proyecto nuevo.

Antecedentes: tengo un repository que contiene tres aplicaciones independientes. No comenzó de esta manera. Originalmente, solo había una aplicación en el repository. Con el time, sin embargo, las necesidades comerciales han cambiado. Una aplicación se convirtió en dos (una versión henetworkingada y una reescritura). Se agregó un service web. Se usaron twigs separadas para contener los tres proyectos. Sin embargo, no comparten ningún código. Y entonces sería más simple tenerlos divididos en sus propios repositorys.

Empecé con la idea de @ user292677 y la networkingefiní para resolver mi problema:

  1. Crea el nuevo repository en github.
  2. cd a su copy local del repository anterior del que desea extraer, que está configurado para rastrear la twig del nuevo proyecto que se convertirá en el maestro del nuevo repository .
  3. $ git push git@github.com:accountname/new-repo +new-project:master

El nuevo repository de Github está terminado. El resultado es;

  • un nuevo repository Github llamado new-repo ,
  • cuyo master corresponde al nuevo proyecto del repo viejo, con
  • toda la historia conservada.

De hecho, descubrí que al usar este método, podía crear el nuevo repository con una selección de twigs elegida a mano, renombrada como quería:

$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3

El resultado es que la twig de site3a preexistente ahora también se mueve al nuevo repository y aparecerá como rails3 . Esto funciona realmente bien: el diagtwig de networking muestra el nuevo master y rails3 con el historial completo y la relación correcta entre ellos.

Actualización 2013-12-07: Usé esto con otro proyecto y verifiqué que esta receta aún funciona.

 git clone -b new-project /path/to/repo /new/repo/path 

Editar: dentro de GitHub, puede "bifurcar" el repository, luego ir a la pestaña Admin en su clon. Debajo de "Nombre del repository" y "Visibilidad" se encuentra "Sucursal pnetworkingeterminada" con un menu desplegable de sucursales. Elija new-project .

Reedición: me acabo de dar count de que es la twig master que desea establecer, no solo la twig "pnetworkingeterminada". Asi que…

  • En GitHub, clonarlos them/repo para you/repo .
  • Ejecute git clone git@github.com:you/repo.git
  • Comience gitk .
  • [Es posible que desee crear una twig old-master para que no pierda la pista de las confirmaciones anteriores.]
  • Encuentre la confirmación más reciente en la twig de new-project , haga clic derecho en el post de confirmación y select "Restablecer twig principal aquí". (También puede hacer esto en la línea de command usando git-reset , pero no he averiguado la invocación correcta).

Su próximo empujón hacia su repository GitHub tendrá que hacerse con la opción --force , pero de lo contrario habrá terminado.

Si es uno de tus repositorys, estás haciendo esto para …

  • Ejecute git clone git@github.com:you/orig.git
  • Ejecute la git clone orig copy
  • Como describí anteriormente, pero desde el repository de copy local, reinicie la twig master a donde lo desee.
  • Crea el proyecto GitHub vacío you/copy . Sigue las instrucciones en GitHub para configurar ese proyecto como un control remoto para tu versión local de copy , push master , ¡y listo!

Actualizar:

cd al repository local que contiene old_branch y:

 $ git push https://github.com/accountname/new_repo.git +old_branch:master 

No estoy seguro de si esta es una buena manera, pero de todos modos es fácil:

 git clone -b new-project git@github.com:User/YourProject.git newProjcet 

Luego crea un nuevo repository en github y presiona.

Recordando que cuando simplemente creas un nuevo repository, pierdes la reference al anterior, y haces más difícil mantener cualquier actualización del proyecto original sincronizado con el nuevo. ¿Tal vez no es mejor bifurcar el repo?

Poco añadido a la respuesta correcta:

$ git push git@github.com: nombre de count / new_repo + old_branch: master

"git@github.com: accountname / new_repo" => get from github Menú desplegable "Clonar o download"

  1. Crea el NEW_REPOSITORY en github.
  2. cd OLD_REPOSITORY
  3. git push https://github.com/accountname/NEW_REPO + master: master

Y eso es todo. (Nota: se conserva el historial de git)

Probé la respuesta anterior y encontré que no era lo suficientemente específica, ya que no especificaba + master: master, que es lo que necesitaba para que funcionara. Funciona muy bien.

Fuente (con mis modificaciones para evitar problemas de ssh con github): Mauricio Aiello, ex Desarrollador Senior de Java, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a -branch-in-an-existing-repository