repositorio remota rama origin example eliminar cambiar git branch git-clone

remota - git pull origin master



¿Cómo puedo clonar una sola rama en Git? (14)

  1. Abra la cáscara de Git Bash.
  2. Cree un directorio en su sistema de archivos donde desee realizar el pago.
    • $ mkdir Feature_develop_branch
  3. Cambie el directorio a la carpeta Feature_develop_branch .
    • $ cd Feature_develop_branch
  4. Clone el repositorio usando una URL de clonación externa.
  5. Después de la clonación, cambie el directorio para crear repositoryName.
    • $ cd / repositoryName
  6. Echa un vistazo a la rama.
    • $ git checkout <Branch Name>

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 que git 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.

  1. Clonar el repositorio

    • git clone <http url>
  2. 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.