2011-09-15 20 views
7

he creado un repositorio Git local y empujo cambios de ella a una distancia gitosis que he creado con¿Cómo sincronizo el maestro y el origen/maestro usando egit en eclipse?

git init my_git 
git remote add origin [email protected]:my_git 
... various adds and commits 
git push origin master:refs/heads/master 

Ahora, editar y confirmar los cambios a nivel local en eclipse, y cuando me comprometo, veo (usando qgit) que mueve mi rama master a esa versión.

Sin embargo, también me muestra que origin/master está en la versión anterior.

git status en la línea de comandos me demuestra todo lo que es hasta la fecha:

$ git status 
# On branch master 
nothing to commit (working directory clean) 

puedo ver las diferencias en las versiones con

git diff origin/master 

si lo hago git push en mi línea de comandos, a continuación, qgit espectáculos la rama origin/master está ahora en el mismo lugar que mi master.

No puedo encontrar la forma de configurar el diálogo "remoto/push" o "remoto/configurar push" en eclipse para hacer lo mismo que una línea de comando git push para mover el origin/master al mismo nivel que el master.

Siempre tengo que hacer la línea de comandos para hacer que origin/master suba al mismo lugar que master.

Q1. ¿Alguien puede decirme cómo hacer esto en eclipse?

Q2. ¿Cuál es la versión de línea de comando de git push que hace que la versión de eclipse no funciona?

Q3. ¿Mis suposiciones son que master es mi puntero HEAD local y origin/master es la vista correcta del servidor actual del HEAD actual?

+0

¿Se actualizó la rama 'master' en el repositorio de gitolite cuando presionas desde Eclipse? –

+0

sí, parece que está actualizado. Hice un empujón desde eclipse, y luego cloné el repositorio de gitolita en otro lugar y los cambios que hice están en mi nuevo clon. el 'origin/master' todavía está configurado en la versión anterior, por lo que me dice que el push está funcionando y' origin/master' no es HEAD del servidor remoto. El nuevo clon tiene "master", "origin/master" en la última versión, pero también un "origen/origen/master" en la versión anterior –

+1

que tienes un 'origin/origin/master' en el nuevo clon me sugiere que de alguna manera accidentalmente has empujado 'origin/master' (en lugar de simplemente' master') a un nombre coincidente en el repositorio de gitolite. –

Respuesta

2

A juzgar por la parte correspondiente del egit's documentation puede:

  • haga clic en el "Añadir todas las ramas especificaciones" botón, para empujar todas sus ramas locales a que tienen el mismo nombre en el repositorio remoto, o
  • (la opción mucho más segura) sólo tiene que seleccionar master tanto bajo "Fuente ref" y "ref destino" sólo empujar su rama master

la rama de seguimiento remoto origin/master normalmente se actualiza por git fetch (que es parte de lo que hace git pull), pero con la línea de comandos git, la rama de seguimiento remoto es también actualizada en una inserción exitosa a la sucursal en el repositorio remoto que se está rastreando. Es posible que Egit, al estar basado en una de las implementaciones Java puras de git, JGit, en lugar de las herramientas de línea de comandos, no actualice origin/master en una inserción exitosa de la misma manera. Si ese es el caso, puede simplemente do a fetch para actualizar origin/master.


actualización: Parece que esto es un error conocido en EGit (no el JGit subyacente) - el informe de error es aquí:

+0

Excelente, la búsqueda hizo el truco. Creo que entiendo por qué tengo que buscar localmente mover el 'origen/maestro' ahora, ¿sería esto una característica o un error? Esperaría saber localmente dónde está el maestro remoto si yo fui el único que le propuse un cambio, el hecho de que tengo que pedirlo en un segundo paso parece extraño, y la línea de comando está haciendo lo que yo ' d más naturalmente espera que suceda. –

+0

Sí, esperaría lo mismo, y lo llamaría un error. De hecho, acabo de encontrar esto en el rastreador de errores: https://bugs.eclipse.org/bugs/show_bug.cgi?id=317411 –

1

una actualización de esto, estaba usando eclipse Helios, y me actualicé a Indigo, con la última versión de egit, y parece que la solución está activa, ya que no tengo que tirar después de un empujón.

+0

Hmm, utilizo Kepler y tengo el repositorio local "L1" y también el contenido remoto. repo "R1" en otra partición de disco. Además hice un clon desnudo "P" de R en un pendrive. En otra computadora hice un clon "R2" de P y luego salí de la forma de proyecto R2 en Eclipse usando el repositorio "L2". Básicamente, servidor para intercambiar cambios entre dos computadoras con la ayuda de pendrive y tener copias de seguridad al descubierto en ambas computadoras. Se parece a esto: – Cromax

Cuestiones relacionadas