tag remota rama origin example crear comandos cambiar git git-commit

remota - git: Tu sucursal está por delante por X confirma.



git pull origin master (16)

¿Cómo se produce esto realmente?

Estoy trabajando en un solo repo en este momento, así que este es mi flujo de trabajo:

  1. Cambiar archivos
  2. Cometer
  3. Repita 1-2 hasta que esté satisfecho
  4. Empujar para dominar

Luego, cuando hago un git status , me dice que mi sucursal está adelantada con X confirmaciones (probablemente la misma cantidad de confirmaciones que he realizado). ¿Se debe a que cuando presiona el código no actualiza sus archivos almacenados en caché localmente (en las carpetas .git)? git pull parece "arreglar" este extraño mensaje, pero todavía siento curiosidad por el hecho de que ocurra, ¿tal vez esté usando git mal?

Incluyendo qué rama está impresa en el mensaje.

Mi sucursal local está por delante del maestro

¿Dónde empujar / tirar de la rama actual

Estoy presionando a GitHub y dirigiéndome a cualquier computadora en la que esté trabajando en ese momento, mi copia local siempre está completamente actualizada ya que soy la única que está trabajando en ello.

en realidad no comprueba el repositorio remoto

Eso es lo que pensé, pensé que me aseguraría de que mi comprensión de ello era correcta.

¿Le estás pasando algunos argumentos extra?

No los que puedo ver, tal vez haya alguna configuración divertida en mi final.

$ git status # On branch master # Your branch is ahead of ''origin/master'' by 1 commit. # nothing to commit (working directory clean)


Usa estos 3 simples comandos.

Paso 1 : git checkout <branch_name>

Paso 2 : git pull -s recursive -X theirs

Paso 3 : git reset --hard origin/<branch_name>

Más detalles: https://.com/a/39698570/2439715

Disfrutar.


Alguien dijo que podrías estar malinterpretando tu mensaje, no lo estás. Este problema realmente tiene que ver con su archivo <project>/.git/config . En ella habrá una sección similar a esta:

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

Si elimina la línea de recuperación del archivo .git / config de su proyecto, detendrá "Su sucursal está delante de ''origen / maestro'' con N confirmaciones". molestia de ocurrir.

O eso espero. :)


Aunque esta pregunta es un poco antigua ... Estaba en una situación similar y mi respuesta aquí me ayudó a solucionar un problema similar que tenía.

Primer intento con la opción push -f o force

Si eso no funcionó, es posible que (como en mi caso) los repositorios remotos (o más bien las referencias a los repositorios remotos que aparecen en git remote -v ) no se estén actualizando.

Como resultado de lo anterior, su empuje sincronizó su sucursal / local con su remoto / sucursal, sin embargo, la memoria caché en su repositorio local aún muestra un compromiso anterior (de local / sucursal ... siempre que solo se haya enviado un solo compromiso) como HEAD.

Para confirmar lo anterior, clone el repositorio en una ubicación diferente e intente comparar HEAD local / sucursal y HEAD remota / ramificada. Si los dos son iguales, entonces probablemente estés enfrentando el problema que yo tuve.

Solución:

$ git remote -v github [email protected]:schacon/hw.git (fetch) github [email protected]:schacon/hw.git (push) $ git remote add origin git://github.com/pjhyett/hw.git $ git remote -v github [email protected]:schacon/hw.git (fetch) github [email protected]:schacon/hw.git (push) origin git://github.com/pjhyett/hw.git (fetch) origin git://github.com/pjhyett/hw.git (push) $ git remote rm origin $ git remote -v github [email protected]:schacon/hw.git (fetch) github [email protected]:schacon/hw.git (push)

Ahora haz un push -f como sigue

git push -f github master ### ¡Tenga en cuenta que su comando ya no tiene origin !

Haz un git pull ahora git pull github master

en git status recibir

# On branch master

nothing to commit (working directory clean)

Espero que esto sea útil para alguien, ya que la cantidad de vistas es tan alta que la búsqueda de este error casi siempre muestra este hilo en la parte superior.

También consulte gitref para más detalles.


Creo que estás malinterpretando el mensaje: tu rama no está delante del master , es el master . Está delante del origin/master , que es una rama de seguimiento remoto que registra el estado del repositorio remoto desde su último push , pull o fetch . Te está diciendo exactamente lo que hiciste; Te adelantaste al mando a distancia y te recuerda que pulses.


De hecho, sucedió esto cuando estaba haciendo un cambio / pago con TortiseGIT.

Mi problema era que había creado la sucursal basada en otra sucursal local. Creó una entrada de "fusión" en /.git/config que se parecía a esto:

[branch "web"] merge = refs/heads/develop remote = gitserver

Donde siempre que cambié a la rama "web", me decía que tenía más de 100 compromisos antes de desarrollar. Bueno, ya no me estaba comprometiendo a desarrollar, así que eso era cierto. Pude simplemente eliminar esta entrada y parece que funciona como se esperaba. Se está rastreando correctamente con la referencia remota en lugar de quejarse de estar detrás de la rama de desarrollo.

Como dijo Vikram, este hilo de desbordamiento de pila es el principal resultado en Google al buscar este problema, así que pensé en compartir mi situación y solución.


En mi caso fue porque cambié a master usando

git checkout -B master

Solo para tirar la nueva versión del mismo en lugar de

git checkout master

El primer comando restablece el jefe de maestro a mis últimas confirmaciones

solía

git reset --hard origin/master

Para arreglar eso


Las respuestas que sugieren git pull o git fetch son correctas.
El mensaje se genera cuando el git status ve una diferencia entre .git/FETCH_HEAD y .git/FETCH_HEAD .git/refs/remotes/<repository>/<branch> (por ejemplo .git/refs/remotes/origin/master .git/FETCH_HEAD .git/refs/remotes/origin/master ).

El último archivo registra el HEAD de la última búsqueda (para el repositorio / rama). Al hacer git fetch ambos archivos se actualizan en el HEAD actual de la rama.
Por supuesto, si no hay nada que recuperar (porque el repositorio local ya está actualizado), .git/FETCH_HEAD no cambia.


Me gustaría reiterar lo mismo que mencionó @Marian Zburlia arriba. Funcionó para mí y sugeriría lo mismo a otros.

git pull origin develop

debe ir seguido de $ git pull --rebase .

Esto eliminará los comentarios sobre el $ git status después del último tirón.


Revisé todas las soluciones en esta página, y afortunadamente @ anatolii-pazhyn comentó porque su solución fue la que funcionó. Desafortunadamente, no tengo la reputación suficiente para promocionarlo, pero recomiendo probar su solución primero:

git reset --hard origin/master

Lo que me dio:

HEAD is now at 900000b Comment from my last git commit here

También recomiendo:

git rev-list origin..HEAD # to see if the local repository is ahead, push needed git rev-list HEAD..origin # to see if the local repository is behind, pull needed

También puedes usar:

git rev-list --count --left-right origin/master...HEAD # if you have numbers for both, then the two repositories have diverged

La mejor de las suertes


Si recibe este mensaje después de hacer una git pull remote branch , intente git fetch con una git fetch . (Opcionalmente, ejecute git fetch -p para eliminar ramas eliminadas del repositorio)

Fetch parece actualizar la representación local de la rama remota, lo que no necesariamente ocurre cuando haces una git pull remote branch .


Si recibe este mensaje después de realizar una confirmación para deshacer el seguimiento del archivo en la rama, intente realizar algún cambio en cualquier archivo y realice la confirmación. Aparentemente, no puede realizar un solo compromiso que incluya solo el seguimiento del archivo previamente rastreado. Finalmente, esta publicación me ayudó a resolver el problema completo https://help.github.com/articles/removing-files-from-a-repository-s-history/ . Solo tuve que eliminar el archivo del historial del repositorio.


Simplemente le recuerda las diferencias entre la rama actual y la rama que realiza la pista actual. Proporcione más información, incluyendo qué rama se imprime en el mensaje y dónde empuja / jala la rama actual.


Tuve este mismo problema en una máquina con Windows. Cuando ejecuté un comando git pull origin master , obtendría la advertencia "adelante de ''origen / maestro'' por X confirmaciones". Descubrí que si, en cambio, ejecutaba el git pull origin y NO especificaba la rama, ya no recibiría la advertencia.


Tuve este problema en mi servidor de escenario donde solo extraigo. Y el reinicio duro me ayudó a limpiar HEAD de la misma forma que a distancia.

git reset --hard origin/master

Así que ahora tengo otra vez:

On branch master Your branch is up-to-date with ''origin/master''.


Utilizar

git pull --rebase

La opción --rebase significa que git moverá su compromiso local a un lado, se sincronizará con el control remoto y luego intentará aplicar sus compromisos desde el nuevo estado.


git fetch resolverá esto por ti

Si mi entendimiento es correcto, su origin/master local (en caché) está desactualizado. Este comando actualizará el estado del repositorio desde el servidor.