Pregunta Git busca una sucursal remota


Mi colega y yo estamos trabajando en el mismo repositorio, lo hemos ramificado en dos ramas, cada una desde el punto de vista técnico para diferentes proyectos, pero tienen similitudes, por lo que algunas veces querremos comprometernos con el * maestro de la sucursal.

Sin embargo, tengo la rama. Mi pregunta es, ¿cómo puede mi colega sacar esa rama específicamente? UN git clone del repositorio no parece crear las sucursales localmente para él, aunque puedo verlas en vivo en unfuddle después de un empujón en mi extremo.

Además, cuando originalmente hice la sucursal que hice -b checkout. ¿No estoy seguro si eso hace mucha diferencia?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Estos son los comandos que ejecuté. Pero definitivamente no está funcionando. Quiero poder verificar esa rama y luego presionar y confirmar solo los cambios de ramas de varios colaboradores o estaciones de trabajo.


1597
2018-03-02 17:06


origen


Respuestas:


Necesita crear una sucursal local que rastree una sucursal remota. El siguiente comando creará una rama local llamada daves_branch, rastreando la rama remota origen / daves_branch. Cuando presione sus cambios, la rama remota se actualizará.

Para la mayoría de las versiones de git:

git checkout --track origin/daves_branch

--track es una abreviatura de git checkout -b [branch] [remotename]/[branch] donde [remotename] es origen en este caso y [rama] es el doble, daves_branch en este caso.

Para git 1.5.6.5 necesitabas esto:

git checkout --track -b daves_branch origin/daves_branch

Para git 1.7.2.3 y superior, esto es suficiente (podría haber comenzado antes, pero esta es la primera confirmación que pude encontrar rápidamente):

git checkout daves_branch

Tenga en cuenta que con las versiones recientes de git, este comando no creará una rama local y lo pondrá en un estado de 'HEAD separado'. Si quieres una sucursal local, usa la --track opción. Todos los detalles aquí: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


2215
2018-03-02 17:45



He usado fetch seguido por checkout ...

git fetch <remote> <rbranch>:<lbranch> 
git checkout <lbranch>

... dónde <rbranch> es la rama remota o fuente ref y <lbranch> es el todavía inexistente rama local o referencia de destino que desea rastrear y que probablemente desee nombrar de la misma manera que la rama remota o ref fuente. Esto se explica en opciones en la explicación de <refspec>.

Git es tan inteligente que completa automáticamente el primer comando si lengüeta después de las primeras letras de la rama remota. IE: Ni siquiera tengo que nombrar la sucursal local, Git copia automáticamente el nombre de la sucursal remota para mí. Gracias Git!

Tambien como la respuesta en esta publicación SO similar muestra, si no nombra la rama local en fetch, aún puede crearlo cuando lo verifique usando el -b bandera. ES DECIR:  git fetch <remote> <branch> seguido por git checkout -b <branch> <remote>/<branch> hace exactamente lo mismo que mi respuesta inicial. Y, evidentemente, si su repositorio tiene solo uno remoto, entonces puedes hacer git checkout <branch> después fetch y creará una sucursal local para ti. P.EJ: Acaba de clonar un repositorio y desea verificar ramas adicionales desde el control remoto.

Creo que parte de la documentación para fetch puede haber sido copiado textualmente de pull. En particular, la sección sobre <refspec> en opciones es el mismo. Sin embargo, no creo que fetch alguna vez merge, de modo que si deja el lado de destino del colon vacío fetch  no deberías hacer nada.

Tenga en cuenta que git fetch <remote> <refspec> es la abreviatura de git fetch <remote> <refspec>: que, por lo tanto, no haría nada, pero git fetch <remote> <tag> es lo mismo que git fetch <remote> <tag>:<tag> que debería copiar el control remoto <tag> en la zona.

Supongo que esto solo es útil si quieres copiar una rama remota localmente, pero no necesariamente la verificas de inmediato. De lo contrario, ahora usaría la respuesta aceptada arriba, que se explica en detalle en la primera sección de descripción de pago y luego en el opciones sección bajo la explicación de --track, ya que es un 1-liner. Bien... tipo de un trazador de líneas, porque lo haría todavía tengo que correr git fetch <remote> primero.

FYI: El orden de la <refspecs> (fuente: destino) explica el extraño método pre Git-1.7 para borrar sucursales remotas. IE: no introducir nada en el refspec de destino.


740
2018-04-19 00:45



Si está intentando "pagar" una nueva sucursal remota (que existe solo en el control remoto, pero no localmente), esto es lo que necesitará:

git fetch origin
git checkout --track origin/<remote_branch_name>

Esto supone que quieres recuperar de origen. Si no, reemplace origen por su remoto nombre.


270
2018-05-17 12:14



Para pagar myBranch que existe de forma remota y no localmente, esto funcionó para mí:

git fetch --all
git checkout myBranch

Recibí este mensaje:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

88
2017-11-12 03:36



Utilizar git branch -a (sucursales locales y remotas) o git branch -r (solo ramas remotas) para ver todos los controles remotos y sus ramas. Entonces puedes hacer un git checkout -t remotes/repo/branch al control remoto y crea una sucursal local.

También hay un comando git ls-remote para ver todas las referencias y etiquetas para ese control remoto.


37
2018-03-02 17:16



El título y la pregunta son confusos:

  • Git busca una sucursal remota
  • ¿Cómo puede mi colega sacar esa rama específicamente?

Si la pregunta es ¿cómo puedo obtener una rama remota para trabajar o cómo hacer una transferencia a una sucursal remota, una solución más simple es:

Con git (> = 1.6.6) puede usar:

git checkout <branch_name>

Si local <branch_name> no se encuentra pero existe una rama de seguimiento en exactamente un control remoto con un nombre coincidente, tratar como equivalente a:

git checkout -b <branch_name> --track <remote>/<branch_name>

ver documentación para el pago de git

Para tu amigo:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

33
2018-03-31 10:48



git checkout -b serverfix origin/serverfix

Esta es una operación bastante común que git proporciona la taquigrafía de pista:

git checkout --track origin/serverfix

De hecho, esto es tan común que incluso hay un atajo para ese atajo. Si el nombre de la bifurcación que intentas pagar (a) no existe y (b) coincide exactamente con un nombre en un solo control remoto, Git creará una sucursal de seguimiento para ti:

git checkout serverfix

Para configurar una sucursal local con un nombre diferente al de la sucursal remota, puede usar fácilmente la primera versión con un nombre de sucursal local diferente:

git checkout -b sf origin/serverfix

Ahora, su sf de sucursal local extraerá automáticamente el origen / serverfix.

Fuente: Pro Git 2nd Edition, escrito por Scott Chacon y Ben Straub(corte para facilitar la lectura)


24
2018-03-18 00:21



git fetch

git branch -r

git checkout <branch_name>

12
2017-12-04 20:53