Zakładając, że twoja gałąź jest wywoływana masterzarówno tutaj, jak i zdalnie, a twój pilot jest nazywany, originmożesz:
git reset --hard <commit-hash>
git push -f origin master
Należy jednak tego unikać, jeśli ktoś inny pracuje ze zdalnym repozytorium i wyciągnął zmiany. W takim przypadku lepiej cofnąć niepotrzebne zatwierdzenia, a następnie wcisnąć jak zwykle.
Aktualizacja: wyjaśniłeś poniżej, że inne osoby wyciągnęły zmiany, które wprowadziłeś, więc lepiej utworzyć nowe zatwierdzenie, które cofnie wszystkie te zmiany . W tej odpowiedzi Jakuba Narębskiego jest dobre wyjaśnienie twoich możliwości zrobienia tego . To, który z nich jest najwygodniejszy, zależy od liczby zmian, które chcesz przywrócić, i która metoda jest dla Ciebie najbardziej sensowna.
Ponieważ z twojego pytania jasno wynika, że git reset --hardzresetowałeś już swój masteroddział, być może będziesz musiał zacząć od git reset --hard ORIG_HEADprzeniesienia swojego oddziału z powrotem do poprzedniego miejsca. (Jak zawsze git reset --hard, upewnij się, że git statusjest czysty, że jesteś na właściwej gałęzi i że znasz się git reflogjako narzędzie do odzyskiwania pozornie utraconych zatwierdzeń.) Powinieneś również sprawdzić, czy ORIG_HEADwskazuje to na prawidłowe zatwierdzenie, za pomocą git show ORIG_HEAD.
Rozwiązywanie problemów:
Jeśli pojawi się komunikat „ ! [Zdalne odrzucenie] a60f7d85 -> master (odrzucony hak wstępny) ”
musisz zezwolić na przepisywanie historii gałęzi dla określonej gałęzi. Na przykład w BitBucket napisano: „Ponowne zapisywanie historii oddziału jest niedozwolone”. Jest pole wyboru o nazwie, Allow rewriting branch historyktóre musisz zaznaczyć.
origin/masternie zostałeś pociągnięty i zepchnięty przez innych użytkowników? Zawsze należy unikać zmiany historii publicznego (tj. Nielokalnego) repozytorium.