225 votos

¿Cómo puedo encontrar la ubicación de origen/maestría en git, y ¿cómo la cambio?

Soy un Git novato. Recientemente me mudé de un proyecto Rails de Subversion a Git. He seguido el tutorial aquí: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

También estoy usando unfuddle.com a la tienda de mi código. Puedo hacer cambios en mi Mac portátil en el tren a/desde el trabajo y, a continuación, empujar a unfuddle cuando tengo una conexión de red mediante el comando siguiente:

git push unfuddle master

Yo uso Capistrano para las implementaciones y tire código de la unfuddle repositorio usando la rama master.

Últimamente me he dado cuenta de la siguiente mensaje de error cuando ejecuto "git status" en mi laptop:

# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)

Y estoy confundido en cuanto a por qué. Pensé que mi laptop fue el origen... pero no sé si el hecho de que originalmente me sacó de la Subversión o empujar a Unfuddle es lo que está causando el mensaje a mostrar. ¿Cómo puedo:

  1. Averiguar donde Git piensa 'origin/master'?
  2. Si está en algún otro lugar, ¿cómo puedo convertir mi computadora portátil en el 'origin/master'?
  3. Este mensaje desaparezca. Me hace pensar en Git es infeliz acerca de algo.

Mi mac se ejecuta Git versión 1.6.0.1.


Cuando ejecuto git remote show origin como se sugiere por el dbr, me sale lo siguiente:

~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

Cuando ejecuto git remote -v como sugiere Aristóteles Pagaltzis, me sale lo siguiente:

~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin  /Users/brian/Projects/GeekFor/gf/.git
unfuddle    git@spilth.unfuddle.com:spilth/geekfor.git

Ahora, curiosamente, estoy trabajando en mi proyecto en la geekfor directorio, pero dice que mi origen es de mi máquina local en el gf directorio. Creo que gf fue el directorio temporal que usaba cuando la conversión de mi proyecto de Subversion a Git y, probablemente, donde me empujó a unfuddle. Entonces creo que me registré fuera de una copia nueva de unfuddle a las geekfor directorio.

Así que parece que debe seguir dbr y el asesoramiento que hacer:

git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git

285voto

Earl Jenkins Puntos 3244

Llegué a esta pregunta en busca de una explicación sobre lo que el mensaje de "su rama está por delante por..." significa, en el régimen general de git. No hubo respuesta, para que aquí, pero esta cuestión ya que actualmente se muestra en la parte superior de Google al buscar la frase "Su rama está por delante de 'origin/master'", y desde entonces he descubierto lo que realmente el mensaje que significa, yo pensé que había puesto la info aquí.

De modo que, siendo un git novato, puedo ver que la respuesta que yo necesitaba era un muy novato respuesta. Específicamente, lo que "su rama está por delante...", la frase significa es que hay archivos que hayas añadido y comprometidos con su repositorio local, pero nunca han empujado a la de origen. La intención de este mensaje es el más ofuscado por el hecho de que "git diff", al menos para mí, no mostró diferencias. No fue hasta que me encontré "git diff origin/master" que me dijeron que había diferencias entre mi repositorio local, y el maestro a distancia.

Así que, para ser claros:


"su rama está por delante por..." => Usted necesita para empujar al maestro a distancia. Ejecutar "git diff origin/master" para ver cuáles son las diferencias entre el repositorio local y el remoto repositorio principal.


Espero que esto ayude a otros novatos.

(También, reconozco que no son de configuración de las sutilezas que en parte puede invalidar esta solución, como el hecho de que el maestro no puede en realidad ser "a distancia", y que "origen" es un reconfigurable nombre usado por convención, etc. Pero los novatos no se preocupan ese tipo de cosas. Queremos simples, respuestas directas. Podemos leer acerca de las sutilezas más tarde, una vez que hemos resuelto el problema acuciante.)

Earl

194voto

dbr Puntos 66401

1. Averiguar donde Git piensa 'origin/master' es el uso de git-remote

git remote show origin

..que devolverá algo como..

* remote origin
  URL: me@remote.example.com:~/something.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branch
    master

Un mando a distancia es, básicamente, un enlace a un repositorio remoto. Cuando usted haga..

git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle

..git push cambios a los que la dirección ha agregado. Es como un marcador, para repositorios remotos.

Cuando ejecute git status, comprueba si el control remoto está comete falta (en comparación con su repositorio local), y si es así, por cuánto se compromete. Si usted empuje de todos los cambios a "origen", ambos serán sincronizados, por lo que no se hacer llegar ese mensaje.

2. Si está en algún otro lugar, ¿cómo puedo convertir mi computadora portátil en el 'origin/master'?

No hay ningún punto en hacer esto. Decir "origen" se cambia a "laptop" - que no quiere hacer git push laptop de tu portátil.

Si desea eliminar el origen remoto, puede hacer..

git remote rm origin

Esto no borra nada (en términos de archivo-content/revisiones-historia). Esto detendrá el "su rama está por delante.." mensaje, pues dejará de comparar su repositorio con el control remoto (porque se ha ido!)

Una cosa para recordar es que no hay nada especial acerca de origin, es sólo un nombre por defecto, git utiliza.

Git hace uso origin por defecto al hacer cosas como git push o git pull. Por lo tanto, si usted tiene una distancia mucho (Unfuddle, en su caso), yo recomendaría añadir unfuddle como "el origen":

git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

o hacer lo anterior en un comando mediante set-url:

git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

A continuación, puede simplemente hacer git push o git pull de actualizar, en lugar de git push unfuddle master

38voto

Mims H. Wright Puntos 1979

Yo tenía un problema que era similar a esta donde mi directorio de trabajo fue ahead of origin by X commits pero la git pull fue resultante en Everything up-to-date. Pude solucionarlo siguiendo estos consejos. Les dejo esto aquí por si ayuda a alguien con un problema similar.

La revisión básica es la siguiente:

$ git push {remote} {localbranch}:{remotebranch}

Donde las palabras entre corchetes debe ser reemplazado por su nombre remoto, con su sucursal local nombre y su nombre de la rama remota. por ejemplo.

$ git push origin master:master

24voto

chim Puntos 1799

a veces hay una diferencia entre el local de la versión en caché de origen maestro (origin/master) y el origen verdadero maestro.

Si ejecuta git remote update esto resincronización de origen maestro con origin/master

ver la aceptación de responder a esta pregunta

Diferencias entre git pull origen master & git pull origin/master

9voto

Aristotle Pagaltzis Puntos 43253

Pensé que mi laptop fue el origen...

Ese es el tipo de absurdas: origin se refiere a la predeterminada repositorio remoto - el que por lo general obtener/tirar de la gente de otros cambios.

¿Cómo puedo:

  1. git remote -v le mostrará qué origin es, origin/master es su "favorito" para el último estado conocido de la master rama de la origin repositorio, y su propia master es un seguimiento de la rama para origin/master. Todo esto es como debe ser.

  2. No. Al menos no tiene sentido para un repositorio el repositorio remoto para sí mismo.

  3. No, no. Es simplemente decirle a usted que ha hecho y lo que muchos se compromete local que no están en el repositorio remoto (según el último estado conocido de que el repositorio).

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X