git push dice "todo actualizado" aunque tengo cambios locales

Resuelto ZelluX asked hace 15 años • 32 respuestas

Tengo un servidor gitosis remoto y un repositorio git local, y cada vez que hago un cambio importante en mi código, también enviaré los cambios a ese servidor.

Pero hoy encuentro que aunque tengo algunos cambios locales y me comprometo con el repositorio local, cuando git push origin masterlo ejecuto dice "Todo actualizado", pero cuando usogit clone archivos en el servidor remoto, no contiene los últimos cambios. . Y sólo tengo una rama llamada "maestra" y un servidor remoto llamado "origen".

PD: Esto es lo que muestra git cuando se ejecuta ls-remote, no estoy seguro de si ayuda

$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c        refs/tags/stage3
ZelluX avatar Jun 16 '09 14:06 ZelluX
Aceptado

¿ Estás trabajando con una cabeza separada por casualidad?

Como en:

cabeza separada

indicando que su última confirmación no es un encabezado de rama.

Advertencia : lo siguiente hace git reset --hard: asegúrese de usarlo git stashprimero si desea guardar los archivos modificados actualmente.

$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>

Como se menciona en la git checkoutpágina de manual (el énfasis es mío):

A veces es útil poder verificar una confirmación que no está en la punta de una de sus ramas .
El ejemplo más obvio es verificar la confirmación en un punto de lanzamiento oficial etiquetado, como este:

$ git checkout v2.6.18

Las versiones anteriores de git no permitían esto y le pedían que creara una rama temporal usando la -bopción, pero a partir de la versión 1.5.0, el comando anterior lo separa HEADde la rama actual y apunta directamente a la confirmación nombrada por la etiqueta ( v2.6.18en el ejemplo anterior).

Puedes usar todos los comandos de git mientras estás en este estado.
Puedes utilizarlo git reset --hard $othercommitpara moverte más, por ejemplo.
Puede realizar cambios y crear una nueva confirmación encima de un HEAD separado .
Incluso puedes crear una combinación usando git merge $othercommit.

El estado en el que se encuentra mientras su HEAD está desconectado no lo registra ninguna rama (lo cual es natural: no está en ninguna rama).
Lo que esto significa es que puede descartar sus confirmaciones y fusiones temporales volviendo a una rama existente (por ejemplo git checkout master), y una posterior git pruneo git gclas recolectaría como basura.
Si hiciste esto por error, puedes pedirle al reflog HEAD dónde estabas, por ejemplo

$ git log -g -2 HEAD

Si bien git pushdice "todo actualizado", técnicamente aún puedes presionar un HEAD separado, como se señala en los comentarios de Jonathan Benn.

 git push origin HEAD:main

Debe especificar la rama de destino, ya que la fuente no es una rama y no tiene una rama de destino ascendente.

VonC avatar Jun 16 '2009 07:06 VonC

Err... Si eres un novato en git, ¿estás seguro de que lo has hecho git commitantes git push? ¡Cometí este error la primera vez!

Laz avatar May 19 '2012 20:05 Laz

¿Quizás estás impulsando una nueva sucursal local?

Se debe impulsar explícitamente una nueva sucursal local:

git push origin your-new-branch-name

Sólo una de esas cosas sobre git... Clonas un repositorio, creas una rama, confirmas algunos cambios, presionas... "Todo está actualizado". Entiendo por qué sucede, pero este flujo de trabajo es extremadamente hostil para los recién llegados.

Roman Starkov avatar Mar 10 '2015 16:03 Roman Starkov

Mi problema era que mi sucursal local tenía un nombre diferente al de la sucursal remota. Pude presionar haciendo lo siguiente:

$ git push origin local-branch-name:remote-branch-name

(Crédito a https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a- Different-name /)

camden avatar Apr 05 '2017 19:04 camden