¿Cómo descargar una rama con git?
Tengo un proyecto alojado en GitHub. Creé una rama en una computadora y luego envié mis cambios a GitHub con:
git push origin branch-name
Ahora estoy en una computadora diferente y quiero descargar esa rama. Entonces lo intenté:
git pull origin branch-name
...pero todo lo que esto hizo fue sobrescribir mi rama maestra con los cambios en mi nueva rama.
¿Qué debo hacer para extraer correctamente mi rama remota, sin sobrescribir las ramas existentes?
Gracias a una pregunta relacionada , descubrí que necesito "comprar" la sucursal remota como una nueva sucursal local y especificar un nuevo nombre de sucursal local.
git checkout -b newlocalbranchname origin/branch-name
O puedes hacer:
git checkout -t origin/branch-name
Este último creará una rama que también está configurada para rastrear la rama remota.
Actualización: han pasado 5 años desde que publiqué esta pregunta originalmente. He aprendido mucho y git ha mejorado desde entonces. Mi flujo de trabajo habitual es un poco diferente ahora.
Si quiero recuperar las ramas remotas, simplemente ejecuto:
git pull
Esto buscará todas las ramas remotas y fusionará la rama actual. Mostrará una salida similar a esta:
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 acerca de mi nuevo my-bugfix-branch
. Para cambiar a esta rama, simplemente puedo ejecutar:
git checkout my-bugfix-branch
Normalmente, necesitaría crear la rama antes de poder verificarla, pero en las versiones más nuevas de git, es lo suficientemente inteligente saber que desea obtener una copia local de esta rama remota.
Para cualquier novato en 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 abusan de Git de alguna manera, ¡pero a mí me sirvió! :-)
Clona el repositorio para el que deseas descargar el código (en este ejemplo, elegí el proyecto LRResty en Github):
$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty
Verifique qué rama está utilizando en este momento (debería ser la rama maestra):
$ git branch
* master
Consulta la rama que quieras, en mi caso se llama 'arcificada':
$ git checkout -b arcified origin/arcified
Branch arcified set up to track remote branch arcified from origin.
Switched to a new branch 'arcified'
Confirme que ahora está utilizando la sucursal que deseaba:
$ git branch
* arcified
master
Si desea actualizar el código nuevamente más tarde, ejecute git pull
:
$ git pull
Already up-to-date.
puedes usar :
git clone <url> --branch <branch>
para clonar/descargar solo el contenido de la rama.
Esto fue especialmente útil para mí, ya que el contenido de mi rama era completamente diferente del de la rama maestra (aunque este no suele ser el caso). Por lo tanto, las sugerencias enumeradas anteriormente por otros no me ayudaron y terminaría obteniendo una copia del maestro incluso después de revisar la rama e hacer un git pull.
Este comando le brindará directamente el contenido de la rama. Funcionó para mí.
Podrías usar git remoto como:
git fetch origin
y luego configure una sucursal local para rastrear la sucursal remota como se muestra 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 el nombre de la rama local.
Podrías cambiar a ese nombre de sucursal local y comenzar a trabajar:
git checkout [local-branch-name]
Navegue hasta la carpeta en su nueva máquina que desea descargar desde git en git bash.
Utilice el siguiente comando para descargar el código de cualquier rama que desee
git clone 'git ssh url' -b 'Branch Name'
Descargará el código de sucursal respectivo.