2013-01-09 16 views
5

Wprowadziłem kilka zmian w mojej głównej gałęzi, których już nie widzę. Z racji sporów, mam hash commit o nazwie 791fda4e1ac0e1a393e01340bf0fba3f333a73ff, który chciałbym teraz zrobić HEAD, ponieważ wtedy wszystko było stabilne w repozytorium. Starałem się wykonać następujące czynności:Git: przenieś HEAD z powrotem do poprzedniego zatwierdzenia

git reset 791fda4e1ac 
git reset --soft [email protected]{1} 
git commit -m "Revert to 791fda4e1ac" 
git reset --hard 

Ale kiedy robię git push origin, mam odrzucone, ponieważ pochodzenie myśli, że to push non-fastforward:

! [rejected]  master -> master (non-fast-forward) 

Jaki jest właściwy sposób przywracania mojego HEAD do zatwierdzenia hash 791fda4e1ac i otrzymania tam również serwera źródłowego?

Odpowiedz

10

Został odrzucony, ponieważ jest non-fast-forward - odrzuca historię, którą inni mogli zbudować.

Zamiast tego należy użyć git revert, aby utworzyć nowe zatwierdzenie, które usuwa efekt istniejących.

Jeśli jesteś pewien, że nikt inny nie korzysta z Twojego repozytorium i nie obchodzi Cię ich popełnienie w przyszłości, należy zignorować ostrzeżenie, git push -f.

+1

Jak wyglądałoby w tym przypadku polecenie 'git revert'? – drevicko

+1

@drevicko Zobacz http://stackoverflow.com/questions/1463340/revert-multiple-git-commits dla różnych możliwości. Najbardziej lubię http://stackoverflow.com/questions/1463340/revert-multiple-git-commits#comment19940208_11743042. – CletusW

2

Musisz wymusić push (git push -f origin).

Powiązane problemy