Si desea editar el historial de una sucursal remota de forma destructiva (por ejemplo, rebase
/amend
), realice los cambios localmente y luego haga git push --force
. A veces no funciona (los administradores del repositorio pueden desactivar esta característica); en ese caso, puede intentar borrar la rama remota con git push origin :my_branch
y luego presionar nuevamente con git push origin my_branch
. De lo contrario, puede usar git revert
, que es la forma recomendada si trabaja en equipo (la regla general es que el historial publicado no debe modificarse).
He aquí un ejemplo (usando this Github repository):
$ touch SOMETHING
$ emacs SOMETHING
$ git add SOMETHING
$ git ci -m SOMETHING
[master d14aaa0] SOMETHING
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 SOMETHING
$ git push
Counting objects: 8, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 611 bytes, done.
Total 6 (delta 3), reused 0 (delta 0)
To [email protected]:23Skidoo/ghc-parmake.git
53f836a..d14aaa0 master -> master
$ git reset --hard "HEAD~"
HEAD is now at 7b2dc96 TODO update.
$ git push --force
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]:23Skidoo/ghc-parmake.git
+ d14aaa0...7b2dc96 master -> master (forced update)
Mirando el commit history, se puede ver que cometen d14aaa0 está ausente.