it-swarm-es.com

¿Cómo verifico una sucursal de Git remota?

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 revisar la rama test remota.

He intentado:

  • git checkout test que no hace nada

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

¿Cómo verifico una sucursal de Git remota?

6088
Juri Glass

Actualizar

La respuesta de Jakub en realidad mejora en esto. Con versiones de Git ≥ 1.6.6, con solo un control remoto, puedes hacer:

git fetch
git checkout test

Como señala el usuario masukomi en un comentario, git checkout test NO funcionará en git moderno si tiene varios controles remotos. En este caso usar

git checkout -b test <name of remote>/test

o la taquigrafía

git checkout -t <name of remote>/test

Respuesta antigua

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

Para obtener una rama, simplemente necesitas:

git fetch Origin

Esto recuperará todas las ramas remotas para ti. Puedes ver las sucursales disponibles para pagar con:

git branch -v -a

Con las sucursales remotas en la mano, ahora debe revisar la sucursal en la que está interesado y entregarle una copia de trabajo local:

git checkout -b test Origin/test
8411
hallski

Sidenote:Con el Git moderno (> = 1.6.6 ), puedes usar solo

git checkout test

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


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

git checkout -b test HEAD
1190
Jakub Narębski

En este caso, es probable que desee crear una rama local test que esté siguiendo la rama remota test:

$ git branch test Origin/test

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

528
ndim

Respuesta aceptada ¿No te funciona?

Si bien la primera y seleccionada respuesta 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: la actualización de rutas es incompatible con el cambio de ramas.
¿Intentó marcar 'Origin/remote_branch' que no se puede resolver como confirmación?

Solución

Si recibe este mensaje, primero debe hacer un git fetch Origin donde 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 puede ver, la ejecución de git fetch Origin recuperó cualquier rama remota que aún no estábamos configurados para rastrear en nuestra máquina local. A partir de ahí, ya que ahora tenemos una referencia a la rama remota, simplemente podemos ejecutar git checkout remote_branch y obtendremos los beneficios del seguimiento remoto.

439
Corey Ballou

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

git fetch Origin 'remote_branch':'local_branch_name'

Esto recuperará la rama remota y creará una nueva rama local (si no existe ya) con el nombre local_branch_name y rastreará la remota en ella.

226
Sahil kalra

Esto será DWIM para un control remoto no nombrado Origen ( 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, el segundo recibe las confirmaciones.

105
tacaswell

Utilizar:

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

Otras respuestas no funcionan con el Git moderno en mi caso benigno. Es posible que deba extraer primero si la rama remota es nueva, pero no he comprobado ese caso.

100
matanster

OK, la respuesta es fácil ... Básicamente ves la sucursal, ¡pero aún no tienes una copia local! ...

Necesitas fetch la rama ...

Simplemente puede obtener y luego realizar el pago a la rama, use el comando de una línea a continuación para hacer eso:

git fetch && git checkout test

También creé la imagen a continuación para que compartas las diferencias, observa cómo funciona fetch y cómo es diferente a pull:

 git fetch

78
Alireza

Para clonar un repositorio Git, haga:

git clone <either ssh url /http url>

El comando anterior verifica todas las ramas, pero solo se inicializará la rama master. Si desea retirar las otras sucursales, haga lo siguiente:

git checkout -t Origin/future_branch (for example)

Este comando verifica la rama remota y su nombre de rama local será el mismo que la rama remota.

Si desea anular el nombre de su sucursal local en el proceso de pago:

git checkout -t -b enhancement Origin/future_branch

Ahora el nombre de su sucursal local es enhancement, pero el nombre de su sucursal remota es future_branch.

Documentación

52
Madhan Ayyasamy

Puedes probar

git fetch remote
git checkout --track -b local_branch_name Origin/branch_name

o

git fetch
git checkout -b local_branch_name Origin/branch_name
34
uma

Primero, necesitas hacer:

git fetch # Si no conoce el nombre de la rama

git fetch Origin branch_name

En segundo lugar, puede consultar la sucursal remota en su local mediante:

git checkout -b branch_name Origin/branch_name

-b creará una nueva rama con el nombre especificado de la rama remota seleccionada.

28
Silent Spectator

Comandos

git fetch --all
git checkout -b <ur_new_local_branch_name> Origin/<Remote_Branch_Name>

son iguales a

 git fetch --all

y entonces

 git checkout -b fixes_for_dev Origin/development

Ambos crearán un latest fixes_for_dev desde development

27
sreekumar

Yo uso el siguiente comando:

git checkout --track Origin/other_remote_branch
25
priyankvex

Si la rama se encuentra en un lugar diferente al Origin remoto, me gusta hacer lo siguiente:

$ git fetch
$ git checkout -b second/next upstream/next

Esto comprobará la rama next en el upstream remoto en una sucursal local llamada second/next. Lo que significa que si ya tienes una sucursal local llamada a continuación, no entrará en conflicto.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

git branch -r dice que el nombre del objeto no es válido, porque ese nombre de rama no está en la lista de sucursales locales de Git. Actualice su lista de sucursales locales desde Origin con:

git remote update

Y luego intente revisar su rama remota de nuevo.

Esto funcionó para mí.

Creo que git fetch saca all remote offices, que no es lo que quería el póster original.

16
webdevguy

ninguna de estas respuestas funcionó para mí. esto funcionó:

git checkout -b feature/branch remotes/Origin/feature/branch

15
brianyang

git fetch && git checkout your-branch-name

15

Simplemente ejecute git checkout con el nombre de la rama remota. Git hará crea automáticamente una rama local que rastrea al remoto:

git fetch
git checkout test

Sin embargo, si ese nombre de rama se encuentra en más de un control remoto, esto no funcionará ya que Git no sabe cuál usar. En ese caso puedes usar cualquiera de los dos:

git checkout --track Origin/test

o

git checkout -b test Origin/test

En 2.19 , Git aprendió la configuración checkout.defaultRemote , que especifica un control remoto que se establece de forma predeterminada para resolver tal ambigüedad.

13
Eugene Yarmash

Estaba atrapado en una situación al ver error: pathspec 'desired-branch' did not match any file(s) known to git. para todas las sugerencias anteriores. Estoy en git version 1.8.3.1.

Así que esto funcionó para mí :

git fetch Origin desired-branch
git checkout -b desired-branch FETCH_HEAD

La explicación detrás es que me he dado cuenta de que al obtener la rama remota, se buscó en FETCH_HEAD:

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

El comando git remote show <Origin name> mostrará una lista de todas las ramas (incluidas las ramas sin seguimiento). Luego puede encontrar el nombre de la rama remota que necesita buscar.

Ejemplo:

$ git remote show Origin

Utilice estos pasos para buscar ramas remotas:

git fetch <Origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

Ejemplo:

$ git fetch Origin test:test
$ git checkout test
10
Thushan

Otros chicos y chicas dan las soluciones, pero tal vez pueda decirte por qué.

prueba de comprobación de git que no hace nada

Does nothing no es igual a doesn't work, así que supongo que cuando escribe 'git checkout test' en su terminal y presiona la tecla Intro, no aparece ningún mensaje y no se produce ningún error. Estoy en lo cierto?

Si la respuesta es 'sí', te puedo decir la causa.

La causa es que hay un archivo (o carpeta) llamado "prueba" en su árbol de trabajo.

Cuando git checkout xxx analizó,

  1. Git ve a xxx como un nombre de rama al principio, pero no hay ninguna rama llamada prueba.
  2. Entonces Git piensa que xxx es una ruta, y afortunadamente (o desafortunadamente), hay un archivo llamado test. Entonces, git checkout xxx significa descartar cualquier modificación en el archivo xxx.
  3. Si tampoco hay un archivo llamado xxx, Git intentará crear la xxx de acuerdo con algunas reglas. Una de las reglas es crear una rama llamada xxx si remotes/Origin/xxx existe.
8
oldman

Para obtener ramas de nueva creación

git fetch

Para cambiar a otra rama

git checkout BranchName
7
Hasib Kamal

Puedes comenzar a rastrear todas las ramas remotas con el siguiente script de Bash:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`
  do git branch -f --track "$branch" "Origin/$branch"
done

Aquí también hay una versión de una sola línea:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
6
OzzyCzech

Busca el control remoto y comprueba la rama.

git fetch <remote_name> && git checkout <branch_name> 

P.ej.:

función de verificación de git fetch Origin && git/XYZ-1234-Agregar alertas

6
Pranav

Si el nombre de la rama remota comienza con caracteres especiales, debe usar comillas simples a su alrededor en el comando de pago o, de lo contrario, git no sabrá de qué rama está hablando.

Por ejemplo, traté de verificar una rama remota llamada #9773 pero el comando no funcionó correctamente, como se muestra en la siguiente imagen:

 enter image description here

Por alguna razón, me pregunté si el símbolo nítido (#) podría tener algo que ver con eso, y luego intenté rodear el nombre de la rama con comillas simples, como '#9773' rathen que solo #9773, y funcionó bien.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

Por favor, siga el comando para crear una carpeta vacía. Ingresa eso y usa este comando:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from Origin.
Switched to a new branch '1_4_0_content_discovery'
1
Mehedi Hasan