2012-08-17 16 views
11

me cambio a dominar y se dice que soy una ventaja de 40 compromete:¿Por qué git dice que tengo 40 commits ahead cuando parezco actualizado y un push-pull (sin archivos) lo arregla?

$ git checkout master 
Switched to branch 'master' 
Your branch is ahead of 'origin/master' by 40 commits. 

Pero cuando luego hacer un tirón que dice estoy arriba-hasta la fecha:

$ git pull origin master 
From https://github.com/dmcouncil/dmWorkflow 
* branch   master  -> FETCH_HEAD 
Already up-to-date. 

la manera que pueda resolver este (quitar msg 40 commits) con:

Michaels-MacBook-Pro-2:dmWorkflow durrantm$ git push origin master 
Everything up-to-date 

y ahora el '40 commits' mensaje se ha ido:

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

¿Por qué tengo que hacer un empujón extra (de lo que parece nada) para sincronizar?
¿Hay un mejor enfoque que pueda tomar para esto?

+0

He cambiado su título. Dijiste 'detrás' cuando querías decir 'adelante'. –

+0

Además, comenzó en la rama 'master', pero al final está en la rama 'mdd_play_settings_and_topics_reports'. Por favor explica esto –

+0

¿Puede confirmar que el mensaje '40 se compromete a continuar 'aún se imprime después de la extracción y antes del empuje? –

Respuesta

5

Esto significa que su información local sobre el origen/maestro es diferente de la versión remota. git fetch corregirá eso. git pull funciona en su caso, porque también hace un git fetch.

+0

Esto tiene más sentido para mí. –

+3

Esta respuesta no parece relevante para esta pregunta en particular. El maestro local está * adelante * del origen/maestro. Por lo tanto, un tirón no hace nada. Mi lectura de la pregunta es que el mensaje '40 se compromete adelante 'todavía está presente después de la extracción. Y que el mensaje solo desaparece después de la inserción (como se esperaba). –

+0

Hola Aaron, sí, la forma en que lo has descrito es correcto.Hmmm, voy a desmarcar esta respuesta (Sorry Jamund) ya que probablemente esta no sea la respuesta a mi pregunta. –

3

Simplemente añadiendo a la respuesta de Jamund Ferguson ...

Si tiene varios controles remotos configurados también se puede hacer un git remote update que buscar la información para todos los mandos a distancia.

Al igual que con git fetch, esto solo actualizará la información que tenga sobre el estado de los controles remotos. No actualizará ni fusionará ningún código, por lo que se recomienda hacerlo con frecuencia para evitar informes de estado extraños y diffs incorrectos.

Como regla general, usted se estaría refiriendo a la información local de la sucursal remota cuando usa un comando que usa una barra inclinada en lugar de un espacio después del remoto, por ejemplo. git command origin/master y git command origin master

Ejemplo de uso: git checkout origin/master cambiará al código según su información local actual y git diff origin/master se diff su código actual con su información local actualizada sobre la rama remota. Esto significa que puede crear fácilmente una bifurcación o modificar su código con una información/código desactualizado del control remoto si no busca de forma regular lo que puede ocasionar problemas engorrosos.

Cuestiones relacionadas