volver remoto eliminar anterior git

remoto - git reset



Cómo deshacer la confirmación del último git commit sin perder los cambios (4)

¿Hay alguna manera de revertir un compromiso para que mi copia local guarde los cambios realizados en ese compromiso, pero se conviertan en cambios no confirmados en mi copia de trabajo? Deshacer un compromiso lo lleva al compromiso anterior: quiero mantener los cambios realizados pero los confirmé en la rama incorrecta.

Esto no ha sido empujado, solo cometido.


Hay muchas maneras de hacerlo, por ejemplo:

En caso de que no hayas empujado el compromiso públicamente todavía:

git reset HEAD~1 --soft

Eso es todo, sus cambios de confirmación estarán en su directorio de trabajo, mientras que la última confirmación se eliminará de su rama actual. Ver git reset man

En caso de que presionara públicamente (en una rama llamada ''maestro''):

git checkout -b MyCommit //save your commit in a separate branch just in case (so you don''t have to dig it from reflog in case you screw up :) )

revertir cometer normalmente y empujar

git checkout master git revert a8172f36 #hash of the commit you want to destroy # this intorduces a new coomit (say, it''s hash is 86b48ba) which removes changes, introduced in the coomit in question (but those changes are still visible in the history) git push origin master

ahora si desea tener esos cambios como cambios locales en su copia de trabajo ("para que su copia local guarde los cambios realizados en esa confirmación"), simplemente revertir la confirmación de revertir con la opción -no-commit :

git revert --no-commit 86b48ba (hash of the revert commit).

He creado un pequeño ejemplo: https://github.com/Isantipov/git-revert/commits/master


La mayoría de las veces ocurre cuando presiona los cambios en la rama incorrecta y luego me doy cuenta. Y siguiendo trabajos en la mayor parte del tiempo.

git revert commit-hash git push git checkout my-other-branch git revert revert-commit-hash git push

  1. revertir el commit
  2. (crear y) pagar otra rama
  3. revertir el revertir

Para el caso: "Esto no ha sido empujado, solo comprometido ". - Si usa IntelliJ (u otro IDE de JetBrains), puede hacerlo a continuación.

Vaya a la ventana Control de versiones ( Alt + 9 ) - pestaña "Registro". Haga clic derecho en un compromiso antes de su último. Restablecer la rama actual aquí -> elija Suave -> pulse Restablecer.

Hecho.

Esto "no confirmará" tus cambios (no los perderás) y te devolverá al punto anterior a tu último compromiso local.


Si presionó los cambios, puede undo y mover los archivos a la etapa sin usar otra rama.

git show HEAD > patch git revert HEAD git apply patch

Se creará un archivo de parche que contiene los últimos cambios de rama. Luego revertir los cambios. Y finalmente, aplique los archivos de parche al árbol de trabajo.