que - git tag name
Deshacer un ''empujón git'' (10)
Esto es lo que hice en mi rama de supuesta estabilidad .
% git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded alpha-0.3.0 to master.
% git status
# On branch alpha-0.3.0
# Your branch is ahead of ''origin/alpha-0.3.0'' by 53 commits.
#
nothing to commit (working directory clean)
% git push
Fetching remote heads...
refs/
refs/heads/
refs/tags/
refs/remotes/
''refs/heads/master'': up-to-date
updating ''refs/heads/alpha-0.3.0''
from cc4b63bebb6e6dd04407f8788938244b78c50285
to 83c9191dea88d146400853af5eb7555f252001b0
done
''refs/heads/unstable'': up-to-date
Updating remote server info
Eso fue todo un error como me di cuenta más tarde. Me gustaría deshacer todo este proceso y revertir la rama alpha-0.3.0 a lo que era.
¿Qué tengo que hacer?
Creo que también puedes hacer esto:
git checkout alpha-0.3.0
git reset --hard cc4b63bebb6
git push origin +alpha-0.3.0
Esto es muy similar al último método, excepto que no tienes que jugar en el repositorio remoto.
Debe asegurarse de que ningún otro usuario de este repositorio esté obteniendo los cambios incorrectos o intentando construir sobre los compromisos que desea eliminar porque está a punto de rebobinar el historial.
Entonces necesitas ''forzar'' empujar la referencia antigua.
git push -f origin last_known_good_commit:branch_name
o en tu caso
git push -f origin cc4b63bebb6:alpha-0.3.0
Es posible que haya configurado receive.denyNonFastForwards
en el repositorio remoto. Si este es el caso, obtendrá un error que incluye la frase [remote rejected]
.
En este escenario, tendrá que eliminar y volver a crear la rama.
git push origin :alpha-0.3.0
git push origin cc4b63bebb6:refs/heads/alpha-0.3.0
Si esto no funciona, tal vez porque tiene configurado el conjunto receive.denyDeletes
, debe tener acceso directo al repositorio. En el repositorio remoto, debe hacer algo como el siguiente comando de plomería.
git update-ref refs/heads/alpha-0.3.0 cc4b63bebb6 83c9191dea8
Deshacer múltiples confirmaciones git reset - hard 0ad5a7a6 (Solo proporcione el hash de confirmación SHA1)
Deshacer última confirmación
git reset - hard HEAD ~ 1 (se eliminarán los cambios al último commit) git reset --soft HEAD ~ 1 (los cambios al último commit estarán disponibles como modificaciones locales no confirmadas)
Esto eliminará la última confirmación empujada en la rama remota (maestra o su rama):
git push origin +HEAD^:master
La solución aceptada (de @charles bailey) es muy peligrosa si está trabajando en un repositorio compartido.
Como práctica recomendada, todas las confirmaciones enviadas a un repositorio remoto que se comparte deben considerarse "inmutables". Utilice ''git revert'' en su lugar: kernel.org/pub/software/scm/git/docs/…
Otra forma de hacer esto:
- crear otra rama
- Verifique la confirmación anterior en esa rama usando "git checkout"
- empujar la nueva rama.
- elimine la rama antigua y presione la eliminación (use
git push origin --delete <branch_name>
) - cambiar el nombre de la nueva rama en la antigua rama
- empujar de nuevo.
Una forma de hacerlo sin perder los cambios que querías:
git reset cc4b63b
git stash
git push -f origin alpha-0.3.0
git stash pop
A continuación, puede elegir los archivos que quería enviar
git revert
es menos peligroso que algunos de los enfoques sugeridos aquí:
prompt> git revert 35f6af6f77f116ef922e3d75bc80a4a466f92650
[master 71738a9] Revert "Issue #482 - Fixed bug."
4 files changed, 30 insertions(+), 42 deletions(-)
prompt> git status
# On branch master
# Your branch is ahead of ''origin/master'' by 1 commit.
#
nothing to commit (working directory clean)
prompt>
Reemplace 35f6af6f77f116ef922e3d75bc80a4a466f92650 con su propio compromiso.
Escenario 1 : Si desea deshacer el último comentario, digamos 8123b7e04b3, a continuación está el comando (esto funcionó para mí):
git push origin +8123b7e04b3^:<branch_name>
La salida se ve a continuación:
Total 0 (delta 0), reused 0 (delta 0)
To https://testlocation/code.git
+ 8123b7e...92bc500 8123b7e04b3^ -> master (forced update)
Información adicional: Escenario 2 : En alguna situación, puede revertir lo que acaba de deshacer (básicamente deshacer el deshacer) mediante el comando anterior, luego use el siguiente comando:
git reset --hard 8123b7e04b3
Salida:
HEAD is now at cc6206c Comment_that_was_entered_for_commit
Más información aquí: https://github.com/blog/2019-how-to-undo-almost-anything-with-git
git push origin +7f6d03:master
Esto revertirá su repo al número de confirmación mencionado