Pregunta ¿Cómo reviso una sucursal remota de Git?


Alguien empujó una rama llamada test con git push origin test a un repositorio compartido. Puedo ver la rama con git branch -r.

Ahora estoy tratando de verificar el control remoto test rama.

He intentado:

  • git checkout test que no hace nada

  • git checkout origin/test da * (no branch). Lo cual es confuso ¿Cómo puedo estar "sin rama"?

¿Cómo reviso una sucursal remota de Git?


5300
2017-11-23 14:23


origen


Respuestas:


Actualizar

La respuesta de Jakub en realidad mejora en esto. Con las versiones de Git ≥ 1.6.6, puedes hacer lo siguiente:

git fetch
git checkout test

(El usuario masukomi señala a continuación que git checkout test NO funcionará en git moderno si tiene múltiples controles remotos. En este caso, use git checkout -b test <name of remote>/test)

Vieja respuesta

Antes de que pueda comenzar a trabajar localmente en una sucursal remota, debe buscarla como se indica en las respuestas a continuación.

Para buscar una rama, solo necesita:

git fetch origin

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

git branch -v -a

Con las sucursales remotas a la mano, ahora necesita verificar la rama que le interesa, proporcionándole una copia de trabajo local:

git checkout -b test origin/test

7346
2017-11-23 14:26



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 magia DWIM-carpeta y crea la 'prueba' de rama local para ti, para lo cual la fuente ascendente sería 'origen / prueba' de la rama de rastreo remoto.


los * (no branch) en git branch salida significa que se encuentra en una rama sin nombre, en el llamado estado "HEAD desconectado" (HEAD apunta directamente a commit, y no es referencia simbólica a alguna rama local). Si realizó algunas confirmaciones en esta rama sin nombre, siempre puede crear una bifurcación local fuera de la confirmación actual:

git checkout -b test HEAD

1088
2017-11-24 00:17



En este caso, es probable que desee crear un local test rama que está rastreando el control remoto test rama:

$ git branch test origin/test

En versiones anteriores de git, necesitabas un explícito --track opción, pero ese es el valor predeterminado ahora cuando se bifurca en una rama remota.


475
2017-11-23 14:27



Respuesta aceptada no funciona para ti?

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

$ git checkout -b remote_branch origin/remote_branch

fatal: comprobación de git: la actualización de rutas no es compatible con el cambio de ramas.
  ¿Tuviste la intención de finalizar la compra de 'origin / remote_branch' que no se puede resolver como commit?

Solución

Si recibe este mensaje, primero debe hacer una git fetch origin dónde origin es 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 puedes ver, corriendo git fetch origin Recuperé las ramas remotas que aún no habíamos configurado para rastrear en nuestra máquina local. A partir de ahí, dado que ahora tenemos una referencia a la rama remota, simplemente podemos ejecutar git checkout remote_branch y obtendremos los beneficios del seguimiento remoto.


390
2017-12-07 20:52



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

git fetch origin 'remote_branch':'local_branch_name'

Esto buscará la rama remota y creará una nueva rama local (si no existe) con el nombre local_branch_namey rastrear el remoto en él.


175
2017-10-18 05:55



Esta voluntad DWIM para un origen remoto sin nombre (documentación)

$ git checkout -t remote_name/remote_branch

Para agregar un nuevo control remoto, primero deberá hacer lo siguiente:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

El primero le dice a Git que el control remoto existe, y el segundo recibe los commits.


100
2018-04-27 22:37



Utilizar:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Otras respuestas no funcionan con Git moderno en mi caso benigno. Es posible que necesite tirar primero si la sucursal remota es nueva, pero no he revisado ese caso.


89
2018-02-21 10:58