Jeśli chcesz edytować destrukcyjnie historię odległej gałęzi (np. rebase
/amend
), wprowadź zmiany lokalnie, a następnie wykonaj git push --force
. Czasami to nie działa (administratorzy repozytorium mogą wyłączyć tę funkcję); w takim przypadku możesz spróbować usunąć zdalny oddział przy pomocy git push origin :my_branch
, a następnie ponownie go nacisnąć, podając git push origin my_branch
. W przeciwnym razie możesz użyć git revert
, który jest zalecany, jeśli pracujesz w zespole (zasada jest taka, że opublikowanej historii nie należy modyfikować).
Oto przykład (przy użyciu 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)
Patrząc na commit history, można zobaczyć, że zobowiązują d14aaa0 jest nieobecny.