2012-07-17 14 views
12

Recientemente fusioné una rama en la que estaba trabajando con la rama 'master'. Debo tener (todavía algo así como un git n00b) hecho algo al empujar o tirar que creó un origin/master y un origin/HEAD ramas. Desafortunadamente, no mantuve un registro de los comandos que ejecuté que hicieron esto. Actualmente, mi equipo tiene un montón de código en sus copias maestras que no obtengo cuando reviso el proyecto (incluso si yo clone a una nueva ubicación).Mi rama git muestra 'origin/master' y 'origin/HEAD' en Sourcetree y no sé cómo fusionar los dos

Aquí hay una captura de pantalla de lo que está mostrando SourceTree:

2 branches

realmente necesito resolver esto para que pueda seguir trabajando por lo que cualquier ayuda será muy apreciada.

+0

Eso no es algo de lo que deba preocuparse. También lo tengo en algunos de mis repositorios, pero es algo así como, solo un puntero a 'origin/master'. Si haces 'git branch -r', deberías ver esto. – Shahbaz

+0

Hmmm ... alguna idea sobre por qué mi maestro está tan fuera de sincronía con los que tienen mis compañeros de equipo? –

+0

Bueno, por supuesto, dado que tiene repositorios diferentes, debe sincronizarlos. Entonces, ¿su pregunta es realmente "cómo fusionar _su_ trabajo con el de' origen' "? – Shahbaz

Respuesta

6

Las ramas que ves que comienzan con origin/ son las denominadas "braches de seguimiento remoto". Le dicen la posición de las sucursales en el repositorio origin la última vez que se obtuvo de ese repositorio.

No hay nada de qué preocuparse, esta es en realidad información útil. Si cree que esas posiciones de sucursales no están actualizadas, puede ejecutar:

git fetch origin 

... para actualizarlas.

En cualquier repositorio, HEAD es un tipo especial de ref (un "symref") que representa la rama actual (o la confirmación actual, si no se encuentra en una rama en particular).


Se puede ver en el diagrama que su rama master es en realidad uno se comprometen por delante de origin/master, así que si sus colegas han estado presionando a master en origin y corrieron git fetch origin (o algo equivalente) hace poco, que ya tiene todo su trabajo. Sin embargo, perderán tu compromiso hasta que lo presiones.

Es decir:

Actualmente, mi equipo tiene un montón de código en sus copias maestras que ahora no recibo cuando me la salida del proyecto (incluso si clonar a una nueva ubicación).

Si ese es el caso, es probable que estén presionando a una rama diferente, a un repositorio diferente, o que no han impulsado su trabajo en absoluto.

+0

También 'git merge origin/' para combinar '' con su rama actualmente desprotegida. De esta forma, no solo actualiza su copia de las ramas de 'origen', sino que obtiene los cambios en los locales. – Shahbaz

+1

No mencioné eso porque en la situación del OP la fusión de 'origin/master' no hará nada - su' master' está * ahead * of 'origin/master'. –

+0

Sí, lo acabo de decir para que la respuesta sea más completa. Como dice: "Actualmente, mi equipo tiene un montón de código en sus copias maestras que no obtengo cuando reviso el proyecto", le dijiste que "vaya a buscarlo", mencioné que después de eso, debería 'git ' fusionar'. – Shahbaz

7

Es solo un puntero al maestro, un enlace simbólico si lo desea. Puede eliminar con seguridad haciendo lo siguiente en un terminal (o git bash/cygwin para los usuarios de Windows):

  1. navegar a su repositorio
  2. ejecutar: git remote set-head origin -d

ahora debe desaparecer :

$ git branch -r 
origin/master 
Cuestiones relacionadas