No se pueden enviar cambios después de usar git reset hard hard


Tuve un error y cometí algunos cambios en git que no debería haber cometido. Después de hacer el commit, empujé mis cambios. Luego usé los siguientes comandos para intentar restablecer mis cambios.

 git reset --hard head

Ahora quiero empujar este 'reset' al repositorio remoto con este comando:

git push MyBranch

Pero estoy recibiendo este error:

remote: error: denying non-fast-forward refs/heads/branch (you should pull first)

Traté de usar este comando sin ningún éxito:

git push -f "origin" 

¿Alguna idea de lo que puedo hacer?

Author: Michael Durrant, 2012-03-21

2 answers

git push -f origin myBranch 

Debería funcionar (siempre que sepa que esto puede ser peligroso si MyBranch ya fue recuperado por otros en su propio repositorio)

Nota: si su repositorio remoto ('origin') tiene su config establecido con

receive.denyNonFastForwards true

Negará cualquier empuje no hacia adelante rápido (incluso cuando se fuerce).
Ver " ¿Hay alguna forma de configurar el repositorio git para rechazar 'git push force force'?".


El OP user654019 informa

Me las arreglé para resolver el problema esta vez estableciendo denyNonFastForwards a false y usando -f para forzar el empuje

Si el OP no tenía acceso al repositorio, tendría que:

  • restablecer la CABEZA local a su posición original (ver " Recuperarse de git reset --hard?"):
    git reset HEAD@{1}
  • haga un nuevo commit que cancele su fusión, como se describe en el libro de ProGit , con git revert:
    git revert -m 1 HEAD~ (en su caso)

Por ejemplo:

$ git revert -m 1 [sha_of_C8]
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
 1 files changed, 0 insertions(+), 2 deletions(-)

revertir una fusión

Una discusión completa sobre cómo revertir una fusión puede encontrarse aquí.

La idea sigue siendo generar solo nuevas confirmaciones, incluyendo una que revierta los cambios introducidos por la confirmación de fusión.
A continuación, puede impulsar ese nuevo compromiso, como un cambio de avance rápido.

 63
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:29

Necesita especificar qué referencia desea enviar:

git push -f origin MyBranch
 6
Author: ralphtheninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-21 12:12:47