git checkout master
git reset --hard 94b90dc1121ce477131fa60ffdc234591554b6c8
git push -f origin master
Oto wyjaśnienie commmands ...
Najpierw upewnij się, że jesteś na gałęzi głównej, więc użyj komendy checkout
więc punkty Głowa do opanowania.
Co to jest HEAD
? Jest to po prostu wskaźnik, który Git utrzymuje, aby wskazać, gdzie aktualnie znajdujesz się w drzewie Git.
W rzeczywistości większość z tych koncepcji, takich jak HEAD i gałęzie, to tylko wskaźniki do różnych punktów w drzewie. Wykonaj gitk
z wiersza poleceń, aby wyświetlić drzewo w ładnym formacie graficznym.
Następnie, pozwólmy, aby reset
twój wskaźnik HEAD był dokładnie taki, jak w pierwotnym pytaniu. Dzięki temu pliki w systemie plików będą zgodne z tym zatwierdzeniem.
Należy jednak zachować ostrożność, ponieważ reset --hard
... jeśli masz wyjątkową pracę lub zatwierdzenia, które nie zostały jeszcze przekazane na serwer, może to spowodować, że staną się "nieosiągalne" (pomyśl jeszcze raz o tym drzewie) ... jeśli "stracisz" "zatwierdza z tego polecenia, ale zazwyczaj można je odzyskać, używając reflog
.
Na koniec, popchnij lokalny stan swojej gałęzi głównej do gałęzi głównej GitHub. -f jest tam, ponieważ ponownie piszesz historię gałęzi, więc musisz powiedzieć Git, aby "wymusić" ją.
Nigdy nie wiedziałem o tym modyfikatorze '+ '. Myślę, że push przy użyciu refspec, który powodowałby, że zdalne zatwierdzenia nie będą odwoływane, wymagałby opcji '-f", zanim zostanie zastosowana. –
Możliwy duplikat [Resetowanie lub przywracanie określonego pliku do konkretnej wersji za pomocą Git?] (Http://stackoverflow.com/questions/215718/reset-lub-revert-a-specific-file-to-a-specific- revision-using-git) – ErTR