2012-10-06 24 views
47

Un colega empujó una nueva rama remota al origen/dev/página de inicio y no puedo verlo cuando corro:Git: No se puede ver la nueva rama remota

$ git branch -r 

todavía veo preexistentes sucursales remotas.

Supongo que esto se debe a que mis referencias remotas locales no están actualizadas, por lo tanto, cuando ejecuté un git pull, no sucedió nada ya que git pull solo tira de la rama de trabajo actual ¿correcto? A diferencia de git push que empuja todas las ramas que tienen cambios en la rama remota correspondiente?

Respuesta

79

Primero, compruebe dos veces que la rama ha sido realmente empujada de forma remota, usando el comando git ls-remote origin. Si la nueva rama aparece en el resultado, intente y proporcione el comando git fetch: debe descargar las referencias de bifurcación del repositorio remoto.

Si su bifurcación remota todavía no aparece, vuelva a verificar (en la salida ls-remote) cuál es el nombre de la sucursal en el control remoto y, específicamente, si comienza con refs/heads/. Esto es debido a que, por defecto, el valor de remote.<name>.fetch es:

+refs/heads/*:refs/remotes/origin/* 

para que sólo las referencias remotas cuyo nombre empieza por refs/heads/ será asignada localmente como referencias de seguimiento a distancia bajo refs/remotes/origin/ (es decir, que se convertirá en Remote- seguimiento de sucursales)

+1

Pude ver la nueva rama remota después de hacer un origen de búsqueda de git, pero no estoy seguro de cuál es la diferencia si acabo de hacer una búsqueda de git? Leí acerca de la actualización remota de git, pero no estaba claro qué hubiera hecho eso. ¿Tendría que ejecutar git fetch para cualquier nueva rama remota de aquí en adelante? – hybrid9

+0

@ hybrid9 Si usa 'git fetch', git descargará las referencias del repositorio remoto predeterminado que se ha especificado en' .git/config': generalmente se llamará 'origin', por lo que ambos comandos son equivalentes, pero su la configuración específica puede ser diferente por alguna razón. No, no necesita dar 'git fetch' para cada rama, ya que (de forma predeterminada) obtiene ** todas las ** ramas. –

+0

Mi git es el predeterminado, no hay cambios en mi configuración. Perdón, quise decir que si alguien agrega una nueva rama remota en la que necesito trabajar, necesitaría ejecutar git fetch origen antes de poder seguirla. Me preocupa lo que hará la captura de git en mis otras ramas rastreadas remotamente, como desarrollar y dominar cuando todavía estoy trabajando en ellas. ¿Supongo que debería aprovechar esos antes de buscar? – hybrid9

19

Haciendo una actualización remota de git también actualizará la lista de sucursales disponibles desde el repositorio remoto.

Si está utilizando TortoiseGit, a partir de la versión 1.8.3.0, puede hacer "Git -> Sincronizar" y habrá un botón de "Actualización remota" en la esquina inferior izquierda de la ventana que aparece. Haga clic en eso. Entonces debería poder hacer "Git -> Cambiar/Finalizar" y hacer que la nueva rama remota aparezca en el menú desplegable de sucursales que puede seleccionar.

+11

'git remote update' es una forma antigua para hacer esto, el comando preferido más nuevo es 'git fetch'. –

1

lo que terminó finalmente trabajando para mí fue la de añadir el nombre del repositorio remoto para el comando git fetch, así:

git fetch core 

Ahora se puede ver todos ellos de esta manera:

git branch --all 
9

Compruebe si .git/config contiene

[remote "origin"] 
    url = … 
    fetch = +refs/heads/master:refs/remotes/origin/master 

Si es así, el cha ENS con decir

[remote "origin"] 
    url = … 
    fetch = +refs/heads/*:refs/remotes/origin/* 

, entonces debería ser capaz de utilizarlo:

$ git fetch 
remote: Counting objects: … 
remote: Compressing objects: .. 
Unpacking objects: … 
remote: … 
From … 
* [new branch]   branchname -> origin/branchname 
$ git checkout branchname 
Branch branchname set up to track remote branch branchname from origin. 
Switched to a new branch 'branchname' 
0

Suena trivial, pero mi problema era que yo no estaba en el proyecto de la derecha. Asegúrese de estar en el proyecto en el que espera estar; de lo contrario, no podrá tirar de las ramas correctas.

Cuestiones relacionadas