2011-10-19 9 views

Respuesta

9

Puede hacer prácticamente todo con un impulso forzado. Cambia tu árbol local a exactamente lo que quieras y git push -f y reemplazará el árbol en el servidor con lo que tienes localmente. Vale la pena señalar que esto causará problemas con cualquier otro repositorio que haya retirado el árbol que acaba de reemplazar.

7

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.

Cuestiones relacionadas