remota - git pull origin master
¿Cómo puedo clonar una sola rama en Git? (14)
- Abra la cáscara de Git Bash.
- Cree un directorio en su sistema de archivos donde desee realizar el pago.
- $ mkdir Feature_develop_branch
- Cambie el directorio a la carpeta Feature_develop_branch .
- $ cd Feature_develop_branch
- Clone el repositorio usando una URL de clonación externa.
- $ git clone https: //someurl.repositoryName.git
- Después de la clonación, cambie el directorio para crear repositoryName.
- $ cd / repositoryName
- Echa un vistazo a la rama.
- $ git checkout
<Branch Name>
- $ git checkout
Tengo un repositorio local de Git llamado "esqueleto" que uso para almacenar esqueletos de proyectos. Cuenta con algunas sucursales, para diferentes tipos de proyectos:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Si quiero revisar 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 del esqueleto, y puedo empujar y jalar para mover los cambios a la configuración básica del proyecto.
Lo que no funciona, sin embargo, es si quiero clonar otra rama. No puedo obtenerlo para que solo tire de la rama que quiero, por ejemplo, la rama de rails
, y luego el nuevo repositorio tiene una rama master
que empuja hacia y extrae de la rama de rails
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 estructure las cosas, y ciertamente estoy abierto a eso. ¿Quizás debería tener varios repositorios, con el repositorio de esqueleto de Ruby on Rails rastreando el repositorio de esqueleto maestro? Y cualquier proyecto individual clonando el repositorio de esqueleto de Ruby on Rails.
Abra el cmd.
cd folder_name
(ingrese la ruta donde clonar la rama)
Sólo un comando:
git clone url_of_projecturltoclone -b branch_name
Clona solo una rama. Esta es la manera más fácil:
$ git clone -b BRANCH_NAME --single-branch [email protected]:___/PROJECTNAME.git
De la página man de git-clone :
--single-branch
es tu amigo durante el clon. recuerda usar con --branch <branch name>
o solo se clonará el HEAD primario remoto (maestro de forma predeterminada)
Siempre recuerde hacer Ctrl + F5 para leer la fuente nueva, no la de la caché :-) (No lo sabía, por lo que no conocía esta opción por mucho tiempo).
Después de que se completó la clonación, tuve que ingresar la git submodule update --init --recursive
para descargar todos los submódulos
Nota: el git1.7.10 (abril de 2012) en realidad le permite clonar solo una rama :
# 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 comments que:
Esto es implícito cuando se hace un clon superficial.
Esto hace quegit clone --depth 1
la forma más fácil de ahorrar ancho de banda.
Y desde Git 1.9.0 (febrero de 2014), los clones poco profundos admiten la transferencia de datos (push / pull), por lo que esa opción es aún más útil ahora.
Consulte más información en " ¿Es git clone --depth 1
(clon superficial) más útil de lo que parece? ".
"Deshacer" se detalla un clon superficial en " Convertir clon superficial a 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 hacer que las ramas faltantes se inviertan
--single-branch
es (git v2.1.4):
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
Para clonar una rama de Git para la que no tiene la clave pública, use esto:
git clone -b <branch> <Git repository URL or clone URL you get from Git repository>
Para clonar una rama específica puedes hacer:
git clone --branch yourBranchName [email protected]
Puedes hacerlo usando el siguiente comando:
git clone -b branch_name --single-branch project_url local_folder_to_clone_in
Puedes probar el camino largo 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 un repositorio Git vacío.
- Agrega el repositorio original como un origen llamado remoto.
- Obtiene solo la rama que necesita desde el origen llamado remoto.
- Crea y verifica una nueva rama que está configurada para rastrear la rama de origen que acaba de clonar.
Esperemos que sea algo como lo que buscas.
Se puede hacer en 2 pasos.
Clonar el repositorio
-
git clone <http url>
-
Revisa la sucursal que quieras
-
git checkout $BranchName
-
Una forma es ejecutar lo siguiente.
git clone user@git-server:project_name.git -b branch_name /your/folder
Donde branch_name
es la rama de su elección y "/ your / folder" es la carpeta de destino para esa rama. Es cierto que esto traerá otras sucursales que le darán la oportunidad de fusionarse de un lado a otro. Ahora, comenzando con Git 1.7.10, ahora puedes hacer esto
git clone user@git-server: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 sucursal que quiero pagar y $REMOTE_REPO
es la URL del repositorio remoto 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 descargarán la rama solicitada.
git clone <url> --branch <branch> --single-branch
Sólo hay que poner en la URL y el nombre de la rama.