
ZelluX
Tengo un servidor de gitosis remoto y un repositorio de git local, y cada vez que hago un gran cambio en mi código, también envío los cambios a ese servidor.
Pero hoy encuentro que aunque tengo algunos cambios locales y me comprometo con el repositorio local, cuando ejecuto git push origin master
dice ‘Todo actualizado’, pero cuando uso git clone
para retirar archivos en el servidor remoto, no contiene los últimos cambios. Y solo tengo una rama llamada “maestro” 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

VonC
¿Estás trabajando con una cabeza separada por casualidad?
Como en:

lo que indica que su última confirmación no es un encabezado de rama.
Advertencia: lo siguiente hace un git reset --hard
: asegúrese de usar git stash
primero si desea guardar sus 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 el git checkout
página man (énfasis mío):
A veces es útil poder verifique un compromiso que no esté en la punta de una de sus ramas.
El ejemplo más obvio es comprobar 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 el -b
opción, pero a partir de la versión 1.5.0, el comando anterior separa su HEAD
desde la rama actual y apunta directamente a la confirmación nombrada por la etiqueta (v2.6.18
en el ejemplo anterior).
Puede usar todos los comandos de git mientras se encuentra en este estado.
Puedes usar git reset --hard $othercommit
para moverse más, por ejemplo.
Puede realizar cambios y crear una nueva confirmación sobre un HEAD separado.
Incluso puede crear una combinación usando git merge $othercommit
.
El estado en el que te encuentras mientras tu CABEZA está desconectada no se registra en ninguna rama (lo cual es natural: no estás en ninguna rama).
Lo que esto significa es que puede descartar sus confirmaciones y fusiones temporales volviendo a una rama existente (p.ej git checkout master
), y una posterior git prune
o git gc
los recogería de la basura.
Si hiciste esto por error, puedes preguntarle al reflog por HEAD dónde estabas, por ej.
$ git log -g -2 HEAD
Err.. Si eres un novato de git, ¿estás seguro de que tienes git commit
antes de git push
? ¡Cometí este error la primera vez!

romano starkov
¿Quizás estás impulsando una nueva sucursal local?
Una nueva rama local debe ser empujada explícitamente:
git push origin your-new-branch-name
Solo una de esas cosas sobre git … Clonas un repositorio, creas una rama, confirmas algunos cambios, empujas … “Todo está actualizado”. Entiendo por qué sucede, pero este flujo de trabajo es extremadamente hostil para los recién llegados.
Mi problema era que mi sucursal local tenía un nombre diferente al de la sucursal remota. Pude empujar haciendo lo siguiente:
$ git push origin local-branch-name:remote-branch-name
(Crédito a https://penandpants.com/2013/02/07/git-empujando-a-una-sucursal-remota-con-un-nombre-diferente/)

Melquía
$ git push origin local_branch:remote_branch
Explicación
Tuve el mismo error y pasé horas tratando de resolverlo. Finalmente lo encontré. Lo que no sabía es que empujando así git push origin branch-x
intentará buscar branch-x localmente y luego empujar a branch-x remoto.
En mi caso, tenía dos urls remotas. Hice un pago de rama-x para rama-y cuando intentaba pasar de y localmente a x remoto, recibí el mensaje de que todo está actualizado, lo cual es normal porque estaba presionando x del segundo control remoto.
En pocas palabras, para no caer en este tipo de trampa, debe especificar la referencia de origen y la referencia de destino:
$ git push origin local_branch:remote_branch
Actualizar:
Si tiene que ejecutar este comando cada vez que empuja su rama, tal vez necesite configurar el flujo ascendente entre su rama local y remota con lo siguiente:
$ git push --set-upstream origin local_branch:remote_branch
O
$ git push -u origin local_branch:remote_branch

chris burbridge
Otra situación que es importante tener en cuenta: el tipo de estado predeterminado para git es que está trabajando en la rama “maestra”. Y para muchas situaciones, pasarás el rato en eso como tu principal rama de trabajo (aunque algunas personas se vuelven elegantes y hacen otras cosas).
De todos modos, eso es sólo una rama. Entonces, una situación en la que podría entrar es:
Mi rama activa en realidad NO es la rama principal. … Pero habitualmente hago el comando: git push
(y ya había hecho anteriormente git push origin master
por lo que es un atajo para ESO).
Así que habitualmente empujo la rama maestra al repositorio compartido… lo que probablemente sea algo bueno y limpio, en mi caso…
¡Pero he olvidado que los cambios en los que he estado trabajando aún no están EN la rama maestra!
Entonces, por lo tanto, cada vez que intento git push
, y veo “Todo al día”, quiero gritar, pero claro, ¡no es culpa de git! Es mio.
Entonces, en lugar de eso, fusiono mi rama con la maestra, y luego empujo, y todo vuelve a ser feliz.

Ruta Somyaranjan
Me he enfrentado al mismo problema. Como no agregué cambios al área de preparación. Y traté directamente de enviar el código al repositorio remoto usando el comando:
git push origin master
Y muestra el mensaje. Everything up-to-date
.
para solucionar este problema, prueba estos pasos
git add .
git commit -m "Bug Fixed"
git push -u origin master
stackoverflow.com/q/5170225/343495
– Dibujó
3 de mayo de 2012 a las 4:07
¡Vale la pena verificar que estás en el directorio correcto! Esp. cuando tiene submódulos, puede confundir las respuestas de git de los padres.
– geoteoría
3 de marzo de 2017 a las 11:48
En mi caso, estaba recibiendo un error mientras
commit
que no me di cuenta y traté de empujar el código– Zohab Alí
1 de agosto de 2018 a las 7:37
se olvidó de comprometerse?
– ldgorman
18 de enero de 2019 a las 11:36
No tengo idea de cómo sucedió esto, pero restablecer el compromiso (
git reset
), cerrar la ventana de mi consola y regresar desde donde comencé me ayudó– O-9
13 de abril de 2021 a las 10:27