2011-10-19 15 views
8

Pchnąłem już pewne zatwierdzenia na moim serwerze git na EC2, a nie na github.Git: Jak mogę zmienić zatwierdzenie serwera?

Jak mogę zmodyfikować te zatwierdzenia na serwerze git?

Operation jak usuń popełnienia, jak podścielanie, zmiana popełnić wiadomość

Czy to możliwe?

Dziękuję bardzo.

Odpowiedz

9

Możesz zrobić prawie wszystko, naciskając przycisk. Zmień swoje lokalne drzewo na dokładnie to, czego chcesz i git push -f, a ono zastąpi drzewo na serwerze tym, co masz lokalnie. Warto zauważyć, że spowoduje to problemy z innymi repozytoriami, które przyciągnęły drzewo, które właśnie zastąpiłeś.

7

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.

Powiązane problemy