Cómo clonar una sola twig en git?

Tengo un repository git local llamado 'esqueleto' que uso para almacenar esqueletos de proyectos. Tiene algunas twigs, para diferentes types de proyectos:

[email protected] [~/Projects/skeleton] git branch * master rails c c++ 

Si quiero verificar la twig principal para un nuevo proyecto, puedo hacer

 [email protected] [~/Projects] git clone skeleton new Initialized empty Git repository in /Users/casey/Projects/new/.git/ 

y todo es como lo quiero Específicamente, la nueva twig maestra apunta a la twig principal del esqueleto, y puedo presionar y tirar para mover los cambios a la configuration básica del proyecto.

Lo que no funciona, sin embargo, es si quiero clonar otra twig. No puedo getlo de modo que solo tire de la twig que quiero, por ejemplo, la twig de los Rails, y luego el nuevo repository tiene una twig 'maestra' que empuja y saca de la twig 'Rails' del repository esqueleto, por defecto.

¿Hay una buena manera de hacer esto? O tal vez esta no es la forma en que el idiota quiere que yo estructure las cosas, y ciertamente estoy abierto a eso. Tal vez debería tener varios repositorys, con los repositorys de esqueleto de los raíles rastreando el repo maestro esqueleto? Y cualquier proyecto individual clonando el repo del esqueleto de los Rails.

¡Cualquier pensamiento y sugerencia es apreciada!

Nota: el git1.7.10 (abril de 2012) en realidad le permite clonar solo una twig :

 # clone only the remote primary HEAD (default: origin/master) git clone --single-branch as in: git clone <url> --branch <branch> --single-branch [<folder>] 

Puedes verlo en t5500-fetch-pack.sh :

 test_expect_success 'single branch clone' ' git clone --single-branch "file://$(pwd)/." singlebranch ' 

Tobu comenta que:

Esto está implícito al hacer un clon superficial.
Esto hace que git clone --depth 1 la forma más sencilla de ahorrar ancho de banda.

Y desde Git 1.9.0 (febrero de 2014), los clones superficiales admiten la transferencia de datos (push / pull), por lo que esa opción es aún más útil ahora.
Ver más en " Is git clone --depth 1 (clon superficial) ¿más útil de lo que git clone --depth 1 ? ".


"Deshacer" un clon superficial se detalla en " Convertir clon superficial en clon completo " (git 1.8.3+)

 # unshallow the current branch git fetch --unshallow # for getting back all the branches (see Peter Cordes' comment) git config remote.origin.fetch refs/heads/*:refs/remotes/origin/* git fetch --unshallow 

Como Chris comenta:

la línea mágica para get las twigs faltantes para revertir --single-branch es (git v2.1.4):

 git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/* git fetch --unshallow 

Una forma es ejecutar lo siguiente

 git clone [email protected]:project_name.git -b branch_name /your/folder 

Donde branch_name es la twig que usted elija y "/ your / folder" es la carpeta de destino para esa twig. Es verdad que esto traerá otras twigs que te dan la oportunidad de fusionarte. Ahora, comenzando con GIT 1.7.10, ahora puede hacer esto

 git clone [email protected]:project_name.git -b branch_name --single-branch /your/folder 

Usando git versión 1.7.3.1 (en Windows), esto es lo que hago ( $BRANCH es el nombre de la twig que quiero pagar y $REMOTE_REPO es la URL del repository remoto del que quiero clonar):

 mkdir $BRANCH cd $BRANCH git init git remote add -t $BRANCH -f origin $REMOTE_REPO git checkout $BRANCH 

La ventaja de este enfoque es que las llamadas subsiguientes de git pull (o git fetch ) también downloadán simplemente la twig solicitada.

Puedes probar la manera larga sin aliento:

 mkdir newrepo.git cd newrepo.git git init git remote add origin file:///path/to/original git fetch origin branchiwant:refs/remotes/origin/branchiwant git checkout -b branchiwant --track origin/branchiwant 

Lo que esto hace es:

  • Crea e inicia el repository vacío de git.
  • Agrega el repository original como un origen llamado remoto.
  • Obtiene solo la twig que necesita desde el origen llamado remoto.
  • Crea y comtesting un nuevo Brach configurado para rastrear la twig fuente que acaba de clonar.

Espero que sea algo así como lo que buscas.

de la página man de git-clone

--single-branch es tu amigo durante clon
recuerde usar con --branch <branch name> o solo se clonará HEAD primario remoto (master por defecto)

siempre recuerde hacer CTRL + F5 para leer fuente nueva, no la de la memory caching 🙂
(No lo hice así que no sabía acerca de esta opción por mucho time)

Puedes hacerlo usando el siguiente command:

 git clone -b branch_name --single-branch project_url local_folder_to_clone_in 
 git clone <url> --branch <branch> --single-branch 

Solo ingrese la url y el nombre de la sucursal

Se puede hacer en 2 pasos

  1. Clonar el repository

    • git clone <http url>
  2. Verifica la sucursal que deseas

    • git checkout $BranchName

Después de completar la clonación, tuve que ingresar la git submodule update --init --recursive para download todos los submodules

abre el cmd
cd folder_name (Ingrese la ruta donde clonar la twig) Solo un command

 git clone url_of_projecturltoclone -b branch_name 
  1. Abra el shell Git bash.
  2. Crea un directory en tu sistema de files donde quieras pagar.
    • $ mkdir Feature_develop_branch
  3. cambiar el directory a la carpeta Feature_develop_branch .
    • $ cd Feature_develop_branch
  4. clonar el repository utilizando la URL de clonación externa.
    • $ git clone https: //someurl.repositoryName.git
  5. Después de la clonación, cambie el directory a repositoryName creado.
    • $ cd / repositoryName
  6. Mira la twig.
    • $ git pago y envío

para la clonación de la twig de Git no tiene key pública el uso este

 git clone -b <branch> <git repo url or clone url you get from git repo>