¿Cómo puedo bifurcar un repositorio público, pero hacer que mi bifurcación sea privada? Tengo la suscripción para admitir repositorios privados.
Las respuestas son correctas, pero no mencionan cómo sincronizar el código entre el repositorio público y la bifurcación.
Aquí está el flujo de trabajo completo (lo hemos hecho antes de abrir el código React Native ):
Primero, duplique el repositorio como otros dijeron (detalles aquí ):
Cree un nuevo repositorio (llamémoslo private-repo
) a través de la interfaz de usuario de Github . Luego:
git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git
Clone el repositorio privado para que pueda trabajar en él:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Para sacar nueva actualidad del repositorio público:
cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master
Impresionante, su repositorio privado ahora tiene el último código del repositorio público más sus cambios.
Finalmente, para crear una solicitud de extracción de repositorio privado -> repositorio público:
Use la interfaz de usuario de GitHub para crear una bifurcación del repositorio público (el pequeño botón "Bifurcación" en la parte superior derecha de la página del repositorio público). Luego:
git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname
Ahora puede crear una solicitud de extracción a través de la interfaz de usuario de Github para public-repo, como se describe aquí .
Una vez que los propietarios del proyecto revisen su solicitud de extracción, pueden fusionarla.
Por supuesto, todo el proceso puede repetirse (solo omita los pasos donde agrega controles remotos).
git clone
configuración normal establecerá ramas de seguimiento remoto y tal vez alguna otra configuración en el repositorio clonado que realmente no desea. Mientras que un clon --bare simplemente copia el directorio .git del control remoto tal como está.git status
muestra todo actualizado, el árbol de trabajo limpio, no importa lo que cambie. En consecuencia, no puedo comprometerme y presionar nada. Eliminé el nuevo repositorio privado que hice 2 veces más para intentarlo, pero seguí encontrando este mismo problema. ¿Alguna sugerencia?Hay una opción más ahora (enero-2015)
fuente
Las respuestas actuales están un poco desactualizadas, por lo que, para mayor claridad:
La respuesta corta es:
Esto está documentado en GitHub: duplicating-a-repository
fuente
Tienes que duplicar el repositorio
Puedes ver este documento (de github)
https://help.github.com/articles/duplicating-a-repository
fuente
GitHub ahora tiene una opción de importación que le permite elegir lo que quiera su nuevo repositorio importado público o privado
fuente