Próbuję usunąć ostatnie 2 zatwierdzenia z jednego z moich repozytoriów GitHub. Próbowałem jak sugeruje tutaj : git push -f origin HEAD^^:master
. Wygląda na to, że działa, ponieważ ostatnie dwa zatwierdzenia są usuwane.
Następnie usunąłem je z mojego lokalnego repozytorium za pomocą git rebase -i HEAD~2
. Usuwam wiersze związane z tymi zatwierdzeniami i sprawdzam git log
, czy zostały poprawnie usunięte.
Następnie dokonuję pewnych zmian w moim lokalnym repozytorium, wykonuję nowe zatwierdzenie i wypycham do GitHub. Problem polega na tym, że na swoim koncie GitHub mam dwa poprzednie zatwierdzenia, które próbowałem usunąć.
Myślę, że problem tkwi w moim lokalnym repozytorium, ponieważ jeśli sklonuję moje repozytorium Github do mojego lokalnego i wprowadzę tutaj pewne zmiany, kiedy wypchnę nowe zatwierdzenie, te stare zatwierdzenia nie zostaną przesłane do GitHub.
Dowolny pomysł?
git reset --hard HEAD^4
lubgit reset --hard HEAD~4
. Chociaż sytuacja może się nieco skomplikować, jeśli twoja historia zawiera fuzje. Więcej informacji na temat określania wersji można znaleźć w odpowiedniej sekcji tutaj .git reset --hard HEAD~7
, ale popraw mnie, jeśli się mylę.Jeśli chcesz usunąć 2 (dwa) ostatnie zatwierdzenia, jest do tego prosta komenda:
Możesz zmienić
2
dowolną liczbę ostatnich zatwierdzeń, które chcesz usunąć.Aby przenieść tę zmianę na zdalną, musisz zrobić
git push
z parametrem force (-f
):Jednak nie polecam wykonywania żadnych
git
poleceń-f
ani--hard
opcji związanych z nimi, jeśli po tych zatwierdzeniach są nowe zatwierdzenia na zdalnym (Github) , które chcesz usunąć. W takim przypadku zawsze używaj .git revert
źródło
hard
polecenie, tracisz te dwa zatwierdzenia. Jeśli chcesz zapisać zmiany, utwórzdiff
plik tych zatwierdzeń przed zastosowaniem resetu.git reset HEAD~5
(nie używaćhard
). W ten sposób otrzymasz zmiany w stanie etapowym (tj. Niezatwierdzone). Dla mnie zobacz tę odpowiedź .Poniższe działa dla mnie
Usuwa ostatnie
n
zatwierdzenia z lokalnego repozytorium, ponieważHEAD^
usuwa tylko jedno. Jeśli chcesz usunąć te zmiany ze zdalnego, może być konieczne wymuszenie wypychania, ponieważ będziesz za zdalnym.źródło