¿Cómo puedo bifurcar mi propio repositorio GitHub?


Así que, novato total a Git. He estado leyendo las guías y creo que tengo lo básico, pero estoy teniendo dificultades para lograr esta meta.

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

Me gustaría tener diferentes directorios en mis sitios de mac dir ~/Sites/project-N. Donde construyo sobre las cosas genéricas y hago una ruptura de un sitio. Me gustaría que estos estén vinculados a mi repositorio principal de git como bifurcaciones, pero no puedes ¿hacer tu propio repo?

Desearí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 a origin. Quiero que empuje a una bifurcación del repositorio markupDNA de donde fue clonado. Pero parece que solo empuja mis cambios hasta el maestro de origen. La idea es mantener el markupDNA limpio y tener un montón de bifurcaciones para mis diferentes proyectos, cada uno de los cuales tendrá su propio dir clonado en mi disco duro.

¿Alguna idea?

Author: Fuego DeBassi, 2010-09-22

7 answers

Probablemente será mucho más fácil usar ramas, en lugar de usar bifurcaciones separadas. Todavía puedes tener checkouts separados para cada rama; simplemente clona tu repositorio varias veces, y usa git checkout en cada una para cambiarlo a la rama apropiada (o git checkout -b para crear la rama y comprobarlo todo a la vez). Una vez que hayas creado las ramas, puedes enviarlas a GitHub usando git push origin <branchname>.

 18
Author: Brian Campbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-22 23:43:04

Estás haciendo lo correcto.

cd ~/Sites/
git clone ~/Dev/markupDNA/ project-N
cd project-N
git remote rename origin markupDNA
  • Nav a la carpeta donde almacena sus proyectos
  • clona tu base markupDNA repositorio con nombre personalizado
  • cambie el nombre del control remoto para que si desea un 'origen' más tarde, pueda
 22
Author: kubi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-22 19:16:34

Sorprendido de que nadie haya hecho referencia a la entrada de blog de este tipo todavía.

Estos son los pasos relevantes:

$ 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, suelo usar una combinación de git remote remove y git remote add.

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

 10
Author: funroll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-22 04:13:44

Para hacer verdadera bifurcación GitHub del propio repositorio puedes usar estos pasos:

  1. Crear una organización
  2. Bifurcación a la organización
  3. Cambiar el nombre del proyecto bifurcado
  4. Vuelve a tu cuenta
 9
Author: Cynede,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-26 07:01:01

Este tutorial da una respuesta simple y directa :

  1. Crear un nuevo repositorio github vacío forkedrepo
  2. Clonarlo localmente:

    git clone https://github.com/YOURUSERNAME/forkedrepo.git
    
  3. Agregue el repositorio github original como remoto del nuevo repositorio local:

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

    git pull upstream master
    
  5. Envía los archivos desde tu nuevo repositorio local a nuevo github repositorio:

    git push origin master
    

Esto no será reconocido por github como una bifurcación del repositorio original, por supuesto, pero esto es tan bueno como se pone.

 8
Author: Iwazaru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-10 17:47:44

Seguro que puedes clonar desde un clon. En git no existe el 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.

Así que puedes hacer todo exactamente como describes e incluso más.

Por ejemplo, tiene sentido mantener una rama en sus sitios de ruptura con ideas para adiciones o modificaciones a sus cosas genéricas. Usted puede tirar de estos hacia arriba hacia su repositorio genérico y distribuir de nuevo desde allí.

 1
Author: Peter Tillemans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-22 19:20:13

También puedes usar La herramienta de importación de Github.

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

  • Crear un nuevo repositorio en Github. IMPORTANTE : no "inicializar con un README"
  • En la siguiente pantalla haga clic en" Importar código "
  • Pegue la URL al repositorio de Github que desea importar. (captura de pantalla )

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

 0
Author: mihow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-26 20:57:43