2011-01-18 17 views
7

Es la función de "bifurcación" específica a github? ¿o hay un proceso puramente git para crear repositorios secundarios "copiados" que pueden extraer actualizaciones del padre? ¿Si es así, cómo?Git - Bifurcando sin Github

EDIT: Debo confundir lo que hace git clone entonces. Tenía entendido que git clone es lo que hago en mi máquina para obtener una copia local del repositorio para realizar cambios, commit y push partir. Actualmente estamos alojando nuestros repos con gitosis. Entonces, si quisiera realizar un 'fork', ¿podría clonar el repositorio en el servidor de gitosis mismo (en el origen)? ¿Eso crearía una nueva dirección de git?

+2

Esa copia local es una réplica completa de los datos originales. No hay distinción técnica entre eso y un tenedor más formal. El botón de fork de github simplemente clona el repositorio y luego almacena algo en su base de datos para que puedan recordar que lo hicieron. – Dustin

Respuesta

7

Es probable que no quiere hacer esto realidad. Las ramas en git son muy bonitas y livianas, y realmente no hay una razón por la que no debas hacer una rama en el repositorio que tienes ahora mismo. La única razón por la que puedo pensar para hacer esto con un repositorio de gitosis es para hacer que el control de acceso sea interesante, si tienes un despliegue continuo o algo que extrae de un repositorio de gitosis y quieres otorgar acceso de confirmación al mismo código, pero no No quiero que puedan escribir en el que está implementado. Para todos los demás usos, solo debe hacer una rama con git branch y hacer todo su trabajo en la sucursal. Alternativamente, es posible que desee clonar un repositorio de Github y luego hacer que un equipo trabaje en él dentro de su arquitectura central de gitosis.

Dado que la pre-alerta, la forma más fácil de crear un "tenedor" de la manera que usted describe, es hacer un depósito independiente en el servidor gitosis. Así que configure otro repositorio con el otro nombre; por ejemplo, si su repositorio original es [email protected]:repo1.git, configuraría otro en [email protected]:repo1-fork.git. Agrega los usuarios a los que quieras acceder.

Luego clonaría el repositorio: git clone [email protected]:repo1.git que coloca una copia completa del repositorio en ./repo1. Para copiarlo de su versión local al repositorio bifurcado, puede hacer un git push [email protected]:repo-fork.git --mirror.

6

Bifurcar en Github es el equivalente a un simple git clone, aunque en el caso de la horquilla es más como un git clone --mirror.

+0

actualización/pregunta editada. – jondavidjohn

+3

Para los que preguntan lo que es un '--mirror' git clone es: http://stackoverflow.com/questions/3959924 – Xavi

4

Cada vez que git clone un repositorio, que ha creado efectivamente un tenedor. Lo único que hace la funcionalidad de bifurcación de GitHub es hacer que el clon sea un repositorio de GitHub, con una página web, gráficos, estadísticas y todas esas cosas buenas.

Además, al clonar un repositorio, Git convierte automáticamente el repositorio original en el repositorio "ascendente" predeterminado (el control remoto llamado origin). Por lo tanto, de fábrica, git pull sin argumentos debe extraerse directamente del original.

+0

actualizado/editado cuestión. – jondavidjohn

2
# clone wanted repo 
git clone https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git 

# cd into created folder 
cd ORIGINAL_REPOSITORY 

# add your remote repository as origin 
git remote add origin https://github.com/my_user/my_repository.git 

# add original repository as upstream 
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git 

# when want to pull from upstream just 
git pull upstream master 

# when want to create upstream pull-request just 
# https://git-scm.com/docs/git-request-pull 
# commit-hash - from where to start pull request 
git request-pull commit-hash [email protected]:my_user/my_repository.git