¿Cómo reviso una rama remota de Git?

Resuelto Juri Glass asked hace 14 años • 43 respuestas

Alguien empujó una rama llamada testa git push origin testun repositorio compartido. Puedo ver la rama con git branch -r. ¿Cómo reviso la testsucursal remota? He intentado:

  • git checkout test, que no hace nada
  • git checkout origin/testda* (no branch)
Juri Glass avatar Nov 23 '09 21:11 Juri Glass
Aceptado

La respuesta se ha dividido dependiendo de si hay un repositorio remoto configurado o varios. La razón de esto es que para el caso remoto único, algunos de los comandos se pueden simplificar ya que hay menos ambigüedad.

Actualizado para Git 2.23: para versiones anteriores, consulte la sección al final.

Con un control remoto

En ambos casos, comience por buscar desde el repositorio remoto para asegurarse de haber descargado todos los cambios más recientes.

$ git fetch

Esto buscará todas las sucursales remotas por usted. Puedes ver las sucursales disponibles para pagar con:

$ git branch -v -a

...
remotes/origin/test

Las ramas que comienzan con remotes/*pueden considerarse copias de solo lectura de las ramas remotas. Para trabajar en una sucursal, necesita crear una sucursal local a partir de ella. Esto se hace con el comando Git switch(desde Git 2.23) dándole el nombre de la rama remota (menos el nombre remoto):

$ git switch test

En este caso, Git adivina (se puede desactivar con --no-guess) que está intentando realizar el pago y realizar un seguimiento de la rama remota con el mismo nombre.

Con múltiples controles remotos

En el caso de que existan varios repositorios remotos, el repositorio remoto debe tener un nombre explícito.

Como antes, comience recuperando los últimos cambios remotos:

$ git fetch origin

Esto buscará todas las sucursales remotas por usted. Puedes ver las sucursales disponibles para pagar con:

$ git branch -v -a

Con las sucursales remotas en la mano, ahora necesita verificar la sucursal que le interesa -cpara crear una nueva sucursal local:

$ git switch -c test origin/test

Para obtener más información sobre el uso git switch:

$ man git-switch

Antes de Git 2.23

git switchse agregó en Git 2.23, antes de esto git checkoutse usaba para cambiar de rama.

Para realizar el pago con un solo repositorio remoto:

git checkout test

si hay varios repositorios remotos configurados, el tiempo será un poco más largo

git checkout -b test <name of remote>/test
hallski avatar Nov 23 '2009 14:11 hallski

Nota al margen: con Git moderno (>= 1.6.6 ), puedes usar solo

git checkout test

(tenga en cuenta que es 'prueba', no 'origen/prueba') para realizar DWIM -mery mágico y crear una rama local 'prueba' para usted, para lo cual el flujo ascendente sería la rama 'origen/prueba' de seguimiento remoto.


La salida * (no branch)in git branchsignifica que está en una rama sin nombre, en el llamado estado "HEAD separado" (HEAD apunta directamente a la confirmación y no es una referencia simbólica a alguna rama local). Si realizó algunas confirmaciones en esta rama sin nombre, siempre puede crear una rama local a partir de la confirmación actual:

git checkout -b test HEAD

Un enfoque más moderno como se sugiere en los comentarios:

@Dennis:, git checkout <non-branch>por ejemplo, git checkout origin/testda como resultado una rama HEAD/sin nombre separada, mientras que git checkout testo da como git checkout -b test origin/testresultado una rama local test(con una rama de seguimiento remoto origin/testcomo ascendente ) – Jakub Narębski 09 enero 2014 en el 08:17

enfásis engit checkout origin/test

Jakub Narębski avatar Nov 24 '2009 00:11 Jakub Narębski

En este caso, probablemente desee crear una testsucursal local que rastree la testsucursal remota:

$ git branch test origin/test

En versiones anteriores de git, necesitaba una --trackopción explícita, pero esa es la opción predeterminada ahora cuando se bifurca desde una rama remota.

Para crear la sucursal local y cambiar a ella, use:

$ git checkout -b test origin/test
ndim avatar Nov 23 '2009 14:11 ndim

¿ La respuesta aceptada no te funciona?

Si bien la primera respuesta seleccionada es técnicamente correcta , existe la posibilidad de que aún no haya recuperado todos los objetos y referencias del repositorio remoto. Si ese es el caso, recibirá el siguiente error:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: actualizar rutas es incompatible con cambiar de rama.
¿Tenía la intención de verificar 'origin/remote_branch' que no se puede resolver como confirmación?

Solución

Si recibe este mensaje, primero debe buscar git fetch origindónde originestá el nombre del repositorio remoto antes de ejecutar git checkout remote_branch. Aquí hay un ejemplo completo con respuestas:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Como puede ver, la ejecución git fetch originrecuperó las sucursales remotas que aún no estábamos configurados para rastrear en nuestra máquina local. A partir de ahí, dado que ahora tenemos una referencia a la rama remota, simplemente podemos ejecutarla git checkout remote_branchy obtendremos los beneficios del seguimiento remoto.

Corey Ballou avatar Dec 07 '2012 20:12 Corey Ballou

Probé la solución anterior, pero no funcionó. Prueba esto, funciona:

git fetch origin 'remote_branch':'local_branch_name'

Esto buscará la sucursal remota y creará una nueva sucursal local (si aún no existe) con el nombre local_branch_namey rastreará la remota en ella.

Sahil kalra avatar Oct 18 '2013 05:10 Sahil kalra