git push dice “todo actualizado” aunque tengo cambios locales

10 minutos de lectura

git push dice todo actualizado aunque tengo cambios locales
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-remoteno 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

  • 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


git push dice todo actualizado aunque tengo cambios locales
VonC

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

Como en:

cabeza separada

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

  • No tengo del todo claro cómo llegué a este estado (haciendo un poco de limpieza con git-svn en este momento), pero esto fue suficiente para regresar al lugar correcto. Gracias.

    – Christopher Schmidt

    2 de julio de 2010 a las 16:21

  • Estoy en un estado mental separado, fusioné mis cambios, confirmé mis cambios y ahora quiero enviar esto a Master y no puedo, me dice “todo actualizado”. Pero estoy siguiendo las instrucciones proporcionadas por mi Gitlab: Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master" Estoy bien hasta el último paso. Pero ahora estoy confundido sobre cómo seguir adelante.

    – Juan

    18 dic. 2019 a las 0:00


  • @John Tienes que estar en una sucursal para empujar. Mientras esté en un modo HEAD desconectado, eso no funcionaría. Restablece tu sucursal a donde estás: git branch -f myBranch HEAD, luego revisa dicha rama y empújala. En tu caso, myBranch puede ser master si estuvieras en proceso de fusión nodeAPI.

    – VoC

    18 de diciembre de 2019 a las 6:52


  • ¡Tenga cuidado de perder todos los cambios locales después de ejecutar este comando! Considere hacer una copia de seguridad de git stash & code antes de hacer algo como esto.

    – kta

    8 jun 2020 a las 21:20


  • @kta Buen punto: he editado la respuesta para que esa advertencia sea visible.

    – VoC

    8 jun 2020 a las 21:41

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!

  • Fue git commit -a -m "your message goes here" en mi caso

    – mehov

    27 mayo 2016 a las 12:00


  • ME ENCANTA (sarcasmo) cada vez que quiero agregar un nuevo proyecto a un github, a veces lo olvido y el mensaje de error me lleva a pensar que hice algo realmente mal, ¡entonces, por supuesto, DUH! commit Solo me pasa cuando me crean nuevos repositorios de respaldo y se me olvida

    – Tom Stickel

    4 de noviembre de 2016 a las 6:47

  • git noob aquí – me olvido de comprometerme cada maldita vez antes de presionar – presionar debería comprometerse automáticamente si no lo has hecho antes

    – ZorroMcCloud

    28/01/2019 a las 18:30

  • @FoxMcCloud Comprometerse es un paso importante a tener en cuenta, estoy seguro de que aprenderás a amarlo si aún no lo has hecho 🙂 ~ git add -A, git diff --staged, se desplaza a través de los cambios mmm se ve muy bien, git commit -m 'bam!', git push

    – AFOC

    27/09/2019 a las 18:50


  • aquí… otra vez… ¯_(ツ)_/¯

    – Frank N Stein

    11 de noviembre de 2021 a las 16:51

git push dice todo actualizado aunque tengo cambios locales
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.

  • ¡Gracias! Esto solucionó mi problema “todo actualizado” con una nueva sucursal que tenía

    – Pangu

    25/08/2015 a las 21:50

  • ¿Qué diablos significa “tu-nuevo-nombre-de-sucursal”? PD: Tienes mucha razón sobre los recién llegados.

    – www-0av-Com

    2 de enero de 2018 a las 23:36

  • @user1863152 ese es el nombre de la nueva sucursal local que creó. Parece que no hiciste eso, así que revisa otras respuestas aquí.

    – Román Starkov

    3 de enero de 2018 a las 11:10

  • Totalmente de acuerdo con “este flujo de trabajo es extremadamente hostil para los recién llegados”. Estoy luchando con esto desde 1 hora. Configuré un repositorio remoto y local. Hizo cambios en el archivo REAME local e intente enviarlo al control remoto y nada cambia en el control remoto.

    – G_real

    2 de julio de 2019 a las 22:24

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/)

Fusion semilineal
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

  • ‘git push upstream dev:master’ Esto significa que enviará la fuente del desarrollador al maestro. ¿Derecha?

    – Dhaduk Mitesh

    7 de enero de 2019 a las 10:24

  • Esto me ayudó, tenía otra sucursal local nombrada como sucursal remota, lo que causó confusión.

    –Hubert Kubiak

    6 de marzo de 2019 a las 11:15

  • Ok, esto definitivamente funciona para mí, pero tengo que hacer esto cada vez que quiero empujar algo al control remoto. ¿Cómo lo arreglo de una vez por todas?

    – Samurái Jack

    20 oct 2019 a las 15:20

  • tal vez necesite configurar el flujo ascendente entre su sucursal local y remota con lo siguiente: $ git push –set-upstream origin local_branch:remote_branch

    – Melquía

    20 oct 2019 a las 19:03

1646975653 624 git push dice todo actualizado aunque tengo cambios locales
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 masterpor 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.

  • ‘git push upstream dev:master’ Esto significa que enviará la fuente del desarrollador al maestro. ¿Derecha?

    – Dhaduk Mitesh

    7 de enero de 2019 a las 10:24

  • Esto me ayudó, tenía otra sucursal local nombrada como sucursal remota, lo que causó confusión.

    –Hubert Kubiak

    6 de marzo de 2019 a las 11:15

  • Ok, esto definitivamente funciona para mí, pero tengo que hacer esto cada vez que quiero empujar algo al control remoto. ¿Cómo lo arreglo de una vez por todas?

    – Samurái Jack

    20 oct 2019 a las 15:20

  • tal vez necesite configurar el flujo ascendente entre su sucursal local y remota con lo siguiente: $ git push –set-upstream origin local_branch:remote_branch

    – Melquía

    20 oct 2019 a las 19:03

1646975653 605 git push dice todo actualizado aunque tengo cambios locales
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

  1. git add .
  2. git commit -m "Bug Fixed"
  3. git push -u origin master

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad