2010-02-19 65 views
145

Tengo un proyecto alojado en GitHub. He creado una rama en un equipo, entonces empujé mis cambios a GitHub con¿Cómo descargar una rama con git?

git push origin branch-name 

Ahora estoy en un equipo diferente, y quiero descargar esa rama. Así que probé:

git pull origin branch-name 

... pero todo esto fue sobreescribir mi rama principal con los cambios en mi nueva sucursal.

¿Qué debo hacer para extraer correctamente mi rama remota?

Respuesta

263

Gracias a un related question, descubrí que lo que necesito a la "comprobación" la rama remota como una nueva rama local, y especifique un nuevo nombre de rama local.

git checkout -b newlocalbranchname origin/branch-name 

O puede hacer:

git checkout -t origin/branch-name 

Este último será crear una rama que también está listo para realizar un seguimiento de la rama remota.


Actualización: Han pasado 5 años desde que Iniciado esta pregunta. Aprendí mucho y git ha mejorado desde entonces. Mi flujo de trabajo habitual es un poco diferente ahora.

Si quiero ir a buscar las sucursales remotas, simplemente ejecute:

git pull 

Esto obtendrá todas las sucursales remotas y fusionar la rama actual. Se mostrará una salida que se ve algo como esto:

From github.com:andrewhavens/example-project 
    dbd07ad..4316d29 master  -> origin/master 
* [new branch]  production -> origin/production 
* [new branch]  my-bugfix-branch -> origin/my-bugfix-branch 
First, rewinding head to replay your work on top of it... 
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8. 

Ahora Git sabe de mi nuevo my-bugfix-branch. Para cambiar a esta rama, puedo simplemente ejecute:

git checkout my-bugfix-branch 

Normalmente, necesitaría crear la rama antes de que pudiera comprobar que funciona, pero en versiones más recientes de Git, es lo suficientemente inteligente como para saber que desea checkout una copia local de esta rama remota.

+2

Sí, lo probé. Esto es más fácil en comparación con mi solución. – ardsrk

+0

Estoy usando GIT 1.7.2.5, y el comando que funcionó para mí fue: '' git branch --track XX origin/XX''. Tu comando me da un error. – dimitarvp

+6

Si no tiene todas las sucursales remotas descargadas, esto puede fallar. Haga "git remote update" para bajarlos. –

-6

Crea un nuevo directorio, y haz un clon en su lugar.

git clone (Dirección de origen) (nombre de la sucursal)

+3

No se puede clonar _solo una rama_ en Git. Solo se puede hacer un clon de repositorio completo. –

19

Se puede usar Git como a distancia:

git fetch origin 

y luego configurar una sucursal local para realizar un seguimiento de la rama remota, como a continuación:

git branch --track [local-branch-name] origin/remote-branch-name 

Ahora tendría el contenido de la rama remota de github en nombre de sucursal local.

Usted puede cambiar a ese-nombre-sucursal local y empezar a trabajar:

git checkout [local-branch-name] 
50

Para cualquier novato de Git como yo, aquí hay algunos pasos que puede seguir para descargar un repositorio remoto, y luego cambiar a la rama que desea ver. ¡Probablemente abusen de Git de alguna manera, pero hizo el trabajo por mí! :-)

clonar el repositorio que desea descargar el código para (en este ejemplo he elegido el LRResty project en Github):

$ git clone https://github.com/lukeredpath/LRResty.git 
$ cd LRResty 

Comprobar qué rama que está usando en este momento (lo que debería ser la rama principal):

$ git branch  
* master 

Mira la rama que desee, en mi caso se llama 'arcified':

$ git checkout -b arcified origin/arcified 
Branch arcified set up to track remote branch arcified from origin. 
Switched to a new branch 'arcified' 

Confirmar que ahora está utilizando la rama que quería:

$ git branch  
* arcified 
    master 

Si desea actualizar el código de nuevo más tarde, ejecute git pull:

$ git pull 
Already up-to-date. 
+0

"Probablemente abusen de Git de alguna manera" - no, esto es exactamente correcto. –

6

Git clon y cd en el nombre de recompra:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git 
Cloning into 'iOS-AppleWach'... 
$ cd iOS-AppleWach 

Cambiar a la rama (una página de GitHub) que yo quiero:

$ git checkout -b gh-pages origin/gh-pages 
Branch gh-pages set up to track remote branch gh-pages from origin. 
Switched to a new branch 'gh-pages' 

y tire de la rama:

$ git pull 
Already up-to-date. 

ls:

$ ls 
index.html  params.json  stylesheets 
5

Vaya a la carpeta en su nueva máquina que desea descargar de Git en fiesta de git.

Uso de comandos a continuación para descargar el código de cualquier rama que le gusta

git clone 'git ssh url' -b 'Branch Name'

se descarga el código de sucursal respectiva.

Cuestiones relacionadas