Tengo un repositorio local de Git llamado 'esqueleto' que utilizo para almacenar esqueletos de proyectos. Tiene algunas sucursales, para diferentes tipos de proyectos:
casey@agave [~/Projects/skeleton] git branch
* master
  rails
  c
  c++
Si quiero consultar la rama maestra para un nuevo proyecto, puedo hacer
casey@agave [~/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 rama maestra apunta a la rama maestra esqueleto, y puedo presionar y tirar para mover los cambios a la configuración básica del proyecto.
Sin embargo, lo que no funciona es si quiero clonar otra rama. No puedo obtenerlo, de modo que solo extraigo la rama que quiero, por ejemplo, la railsrama, y luego el nuevo repositorio tiene una masterrama que empuja y tira de la railsrama del repositorio de esqueleto , de forma predeterminada.
¿Hay una buena manera de hacer esto? O, tal vez esta no sea la forma en que Git quiere que yo estructurar las cosas, y ciertamente estoy abierto a eso. ¿Quizás debería tener múltiples repositorios, con el repositorio de esqueletos Ruby on Rails rastreando el repositorio de esqueletos maestro? Y cualquier proyecto individual que clone el repositorio de esqueletos de Ruby on Rails.

git branch -amuestra?git checkout -b newbranch origin/branchiwantFuncionaría mejor? (sin la--trackopción)Respuestas:
Nota: el git1.7.10 (abril de 2012) en realidad le permite clonar solo una rama :
Puedes verlo en
t5500-fetch-pack.sh:Tobu comenta que:
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.
Vea más en " ¿Es
git clone --depth 1(clon superficial) más útil de lo que parece? "."Deshacer" un clon superficial se detalla en " Convertir clon superficial en clon completo " (git 1.8.3+)
Como Chris comenta:
Con Git 2.26 (Q1 2020), "
git clone --recurse-submodules --single-branch" ahora usa la misma opción de rama única al clonar los submódulos .Ver commit 132f600 , commit 4731957 (21 de febrero de 2020) por Emily Shaffer (
nasamuffin) .(Fusionada por Junio C Hamano -
gitster- en commit b22db26 , 05 mar 2020)fuente
git clone <url> --branch <branch> --single-branch <folder>Funciona de maravilla.clone --depth 1la forma más fácil de ahorrar ancho de banda.--depth 1no son seguros para el usuario porque pueden desear realmente empujar / tirar con el nuevo clon.--single-branchesgit config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*ygit fetch --unshallow(git v2.1.4)Una forma es ejecutar lo siguiente.
Dónde
branch_nameestá la rama de su elección y "/ su / carpeta" es la carpeta de destino para esa rama. Es cierto que esto traerá otras ramas que le darán la oportunidad de fusionarse de un lado a otro.Actualizar
Ahora, comenzando con Git 1.7.10, ahora puedes hacer esto
fuente
--single-branchpara obtener solo el historial asociado con esta rama en lugar de todo el historial y las etiquetas que contiene el repositorio.Usando Git versión 1.7.3.1 (en Windows), esto es lo que hago (
$BRANCHes el nombre de la rama que quiero pagar y$REMOTE_REPOes la URL del repositorio remoto desde el que quiero clonar):La ventaja de este enfoque es que las llamadas
git pull(ogit fetch) posteriores también solo descargarán la rama solicitada.fuente
git clone -b $BRANCH $REMOTE_REPO $BRANCHafik son lo mismo?git clone -ble da todas las referencias remotas (todas las ramas y etiquetas remotas) como segit branch -amuestra. Con mi guión, solo obtienes una sola referencia.-t $BRANCHfunciona incluso sin-f, lo que se obtendría de inmediato. Luego,git fetch originbuscaría ygit checkout $BRANCHestablecería la sucursal local y el pago. Eso es útil cuando necesita configurar el control remoto antes de ir a buscar, por ejemplogit config remote.origin.uploadpack=/bin/upload-pack.branch -amostróorigin/$BRANCH. Haciendogit checkout origin/$BRANCHesto arreglado.Puedes probar el camino largo:
Lo que esto hace es:
Esperemos que sea algo así como lo que buscas.
fuente
git branch -r?git branch -rno da salida.Puede hacerlo utilizando el siguiente comando:
fuente
Desde la página de manual de git-clone :
--single-branches tu amigo durante la clonación, recuerda usarlo--branch <branch name>o solo se clonará HEAD primaria remota (maestro por defecto)Siempre recuerde hacer Ctrl+ F5para leer la fuente nueva, no la de la memoria caché :-) (no lo sabía, por mucho tiempo).
fuente
Simplemente ingrese la URL y el nombre de la sucursal.
fuente
Clonar solo una rama. Esta es la manera más fácil:
fuente
Para clonar una rama específica, puede hacer:
git clone --branch yourBranchName [email protected]fuente
Para clonar una rama de Git para la que no tiene la clave pública, use esto:
fuente
Abre el cmd.
cd folder_name(ingrese la ruta donde clonar la rama)Solo un comando:
fuente
Un poco tarde pero quería agregar la solución que usé para resolver este problema. Encontré la solución aquí .
De todos modos, la pregunta parece ser: ¿cómo comenzar un nuevo proyecto desde una sucursal de otro repositorio?
Para esto, la solución que usé sería crear primero un nuevo repositorio en github o donde sea. Esto servirá como repositorio de su nuevo proyecto.
En su máquina local, navegue hasta el proyecto que tiene la rama que desea usar como plantilla para su nuevo proyecto.
Ejecute el comando:
Lo que esto hará es empujar el old_branch a new-repo y convertirlo en la rama maestra del nuevo repositorio.
A continuación, solo tiene que clonar el nuevo repositorio en el directorio local de su nuevo proyecto y comenzará un nuevo proyecto en la rama anterior.
fuente
Tomemos el ejemplo del repositorio de frascos. Tiene 3 sucursales además de master. Vamos a pagar la rama remota 1.1.x
clonar el repositorio git
CD en el repositorio.
buscar la rama remota 1.1.x
pagar la sucursal
Cambiará a la rama 1.1.xy rastreará la rama remota 1.1.x.
fuente
Similar a lo que @ nosaiba-darwish dijo aquí: aquí
Esto es lo que solemos hacer en nuestra empresa:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locallyfuente
Si desea un clon superficial, puede hacerlo con:
--depth=1implica--single-branch.fuente
Hay principalmente 2 soluciones para esto:
git clone -b <BRANCH_NAME> <GIT_REMOTE_URL>Ejemplo: git clone -b tahir https://github.com/Repository/Project.git
El siguiente comando clonará la rama tahir del repositorio git. El comando anterior clona solo la rama específica pero obtiene los detalles de otras ramas. Puede ver todos los detalles de las ramas con el comando.
git branch -agit clone -b <BRANCH_NAME> --single-branch <GIT_REMOTE_URL>Ejemplo: git clone -b tahir --single-branch https://github.com/Repository/Project.git
Ahora si haces un
git branch -a, solo mostrará su rama única actual que ha clonado y no todas las ramas, por lo que depende de usted cómo lo desee.Espero que ayude a alguien algún día !! ...
fuente
puede usar este comando para obtener una sola rama y cambiar el nombre de la carpeta si desea mantener una rama independiente
ejemplo
fuente
git clone --branch {branch-name} {repo-URI}Ejemplo:
git clone --branch dev https://github.com/ann/cleaningmachine.git{branch-name}{repo-URI}fuente
Se puede hacer en 2 pasos.
Clonar el repositorio
git clone <http url>Echa un vistazo a la sucursal que deseas
git checkout $BranchNamefuente