2010-09-22 18 views
28

Por lo tanto, novato total de Git. He estado leyendo las guías y creo que tengo los conceptos básicos, pero estoy teniendo dificultades para lograr este objetivo.¿Cómo puedo bifurcar mi propio repositorio de GitHub?

Tengo un repositorio creado para mi código fuente de marcado genérico. Solo cosas que reutilizo para cada ruptura. Se llama markupDNA.git

Me gustaría tener diferentes directorios en mi mac sitios dir ~/Sites/project-N. Donde construyo sobre las cosas genéricas y hago un desglose de un sitio. Me gustaría que estos estén vinculados a mi repositorio principal de git como tenedores, ¿pero no se puede bifurcar su propio repositorio?

Me gustaría poder hacer algo como esto:

git clone <url> name 
git add . 
# make changes 
git commit -m 'whatever' 
git push 

Pero no quiero que empuje al origen. Quiero que empuje a un tenedor del repositorio markupDNA desde donde fue clonado. Pero parece que simplemente empuja mis cambios directamente al maestro de origen. La idea es mantener el markupDNA limpio y tener muchas horquillas para mis diferentes proyectos, cada uno de los cuales tendrá su propio directorio clonado en mi disco duro.

¿Alguna idea?

+0

posible duplicado de [¿Cómo organiza su propio proyecto en github?] (Http://stackoverflow.com/questions/10963878/how-do-you-fork-your-own-project-on-github) – Shane

Respuesta

18

Probablemente será mucho más fácil usar branches, en lugar de usar las horquillas por separado. Aún puede tener cajas separadas para cada sucursal; solo clone su repositorio varias veces, y use git checkout en cada uno para cambiarlo a la sucursal correspondiente (o git checkout -b para crear la sucursal y verifíquela de una sola vez). Una vez que haya creado las ramas, puede empujarlas a GitHub usando git push origin <branchname>.

+0

Esto parece una buena manera de hacerlo. Pero cuando clono mi repositorio, hago una nueva rama, edito desde esa rama y trato de hacer un "git push [email protected]: rorourke/markupDNA.git" ¿la rama no aparece en github? –

+1

Necesita hacer "git push origin " para crear la nueva rama en el control remoto. Me sorprende que el comando que citó no dé un error, ¿o sí? – ebneter

+0

@Fuego como lo dice ebneter, debe especificar el nombre de la rama que está presionando cuando inserte nuevas ramas en GitHub. –

22

Estás haciendo lo correcto.

cd ~/Sites/ 
git clone ~/Dev/markupDNA/ project-N 
cd project-N 
git remote rename origin markupDNA 
  • de navegación a la carpeta donde se almacenan los proyectos
  • clon su base markupDNA repo con nombre personalizado
  • renombrar el mando a distancia de modo que si usted quiere un 'origen' más adelante, puede
+3

Esto es exactamente lo que necesito para usar mi aplicación de esqueleto. Sería una locura crear una rama para cada proyecto que utiliza la aplicación de esqueleto ... y de esta manera, aún puedo extraer actualizaciones del esqueleto – NDM

+0

Cuando necesite actualizar con los cambios de su aplicación de esqueleto puede usar 'git pull MarkupDNA master' – Nick

1

Claro que puedes clonar desde un clon. En git no hay concepto de un repositorio principal. La gente a menudo designa un repositorio principal, pero eso es por convención, no por una razón técnica.

Para que pueda hacer todo exactamente como lo describe y más.

Por ejemplo, tiene sentido mantener una sucursal en sus sitios principales con ideas para adiciones o modificaciones a sus elementos genéricos. Puede aumentar esto hacia su repositorio genérico y distribuir nuevamente desde allí.

9

para hacer cierto tenedor GitHub del propio repositorio puede utilizar estos pasos:

  1. Crear una organización
  2. Tenedor de organización
  3. Renombrar bifurcada proyecto
  4. volver a su cuenta
+3

Aparece "rdp ya tiene un repositorio en la red rdp/screen-capture-recorder-to-video-windows-free" cuando "Transferir propiedad" vuelve a mí. Pero puedo usar la copia que se encuentra en la organización, ¡gracias! – rogerdpack

+0

Sí, tengo el mismo error ... Ni siquiera puedo bifurcar ese proyecto bifurcado después de cambiarle el nombre. Ojalá pudiera hacer que GitHub "olvide" que era una bifurcación de alguna manera ... – Kidburla

+0

¿Puedes explicar cómo usar 'git pull-rebase upstream master' no lo entiendo. Este método en la publicación arroja el error al intentar '4. volver a su cuenta' – Noitidart

10

Sorprendido, nadie ha hecho referencia al blog post de este tipo todavía.

Esto es los pasos pertinentes:

$ git clone [email protected]:YOURNAME/foo.git bar 
$ cd bar 
$ vim .git/config 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:YOURNAME/bar.git #replace foo with bar 
$ git remote add upstream [email protected]:YOURNAME/foo.git 
$ git push -u origin master 

En lugar de editar la configuración, que suelen utilizar una combinación de git remote remove y git remote add.

También puede usar git remote rename seguido de git remote add si desea mantener el origen ascendente.

+0

Simplemente curioso, pero ¿por qué te gustaría organizar tu propio proyecto? – yan

+0

Una razón es si vas a limpiarlo pero quieres un registro de la historia anterior. Por ejemplo , eliminando muchas ramas y etiquetas antiguas. – funroll

+2

El uso de vim es un poco tonto cuando ya hay comandos git para hacer las ediciones apropiadas: '$ git clone [email protected]: YOURNAME/foo.git bar',' $ cd bar', '$ git remote rename origin upstream',' $ git remote add origin [email protected]: YOURNAME/bar.git', y luego '$ git push -u origin master'. –

8

This tutorial da una simple y sencilla respuesta:

  1. Crear un nuevo github vacío fokedrepo repositorio
  2. Clon de forma local:

    git clone https://github.com/YOURUSERNAME/forkedrepo.git 
    
  3. Añadir el repositorio GitHub original como a distancia de la nuevo repositorio local:

    git remote add upstream https://github.com/YOURUSERNAME/originalrepo.git 
    
  4. Tire hacia abajo de una copia del repositorio GitHub original a su nuevo repositorio local:

    git pull upstream master 
    
  5. empujar los archivos de su nuevo repositorio local a nuevo repositorio GitHub:

    git push origin master 
    

Esto no será reconocido por github como una bifurcación del repositorio original, por supuesto, pero esto es lo mejor posible.

0

También puede usar Github's import tool.

(que está hecho para importar desde SVN, etc., pero se puede utilizar para esto también)

  • Crear nuevo repositorio en Github. IMPORTANTE: no "inicializar con un README"
  • En la siguiente pantalla haga clic en "Importar código"
  • pega la URL a la Github reporto que desea importar. (screenshot)

De nuevo, esto está creando un nuevo repositorio y no es una verdadera bifurcación en Github. Pero todas sus ramas, historia, etc. estarán allí.

Cuestiones relacionadas