Wystąpiłem, git commit
a następnie git push
. Jak mogę przywrócić tę zmianę w lokalnych i zdalnych repozytoriach?
$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date: Tue Jun 11 12:24:23 2011 -0700
git
git-push
git-commit
Michael
źródło
źródło
git reset --hard <the-sha-you-want-to-return-to>
.git log --decorate --oneline
aby dowiedzieć się, gdzie wskazuje HEAD.git reset HEAD~1
jeśli nie chcesz, aby twoje zmiany zniknęły (zmiany niestacjonarne). Zmień, zatwierdź i pchnij ponowniegit push -f [origin] [branch]
Zasadniczo dokonaj „odwrotnego” zatwierdzenia, używając:
następnie wyślij go do pilota jak zwykle:
Nie spowoduje to usunięcia zatwierdzenia: powoduje dodatkowe zatwierdzenie, które powoduje cofnięcie tego, co zrobiło pierwsze zatwierdzenie. Wszystko inne, niezbyt bezpieczne, szczególnie gdy zmiany zostały już rozpowszechnione.
źródło
git reset
jest akceptowane tylko, jeśli zmiany nie zostały jeszcze przesłane do serwera.Po pierwsze, zrelaksuj się.
„Nic nie jest pod naszą kontrolą. Nasza kontrola jest jedynie iluzją.”, „Błędem jest człowiek”
Rozumiem, że przypadkowo popchnąłeś swój kod
remote-master
. TO będzie w porządku.1. Najpierw uzyskaj
SHA-1
wartość zatwierdzenia, które próbujesz zwrócić, np. Zatwierdzenie do gałęzi master. Uruchom to:zobaczysz kilka „f650a9e398ad9ca606b25513bd4af9fe ...” jak ciągi wraz z każdym z zatwierdzeń. skopiuj ten numer z zatwierdzenia, który chcesz zwrócić .
2. Teraz wpisz poniższe polecenie:
powinieneś zobaczyć komunikat „HEAD jest teraz w”. jesteś czysty. To, co właśnie zrobił, to lokalne odzwierciedlenie tej zmiany.
3. Teraz wpisz poniższe polecenie:
powinieneś zobaczyć jak
Teraz wszystko jasne. Sprawdź ponownie master za pomocą „git log”, twoje fixed_destination_commit powinno znajdować się na górze listy.
Serdecznie zapraszamy (z góry;))
AKTUALIZACJA:
Teraz zmiany, które wprowadziłeś, zanim te wszystkie się zaczęły, zniknęły. Jeśli chcesz przywrócić te ciężkie prace, jest to możliwe. Dzięki git reflog i git komendom cherry-pick .
W tym celu sugeruję śledzenie tego bloga lub tego postu .
źródło
git reset HEAD~1
jeśli nie chcesz, aby twoje zmiany zniknęły (zmiany niestacjonarne). Zmień, zatwierdz i wciśnij ponowniegit push -f [origin] [branch]
źródło
Możesz zrobić interaktywną bazę:
Spowoduje to wyświetlenie domyślnego edytora. Wystarczy usunąć wiersz zawierający zatwierdzenie, które chcesz usunąć, aby usunąć to zatwierdzenie.
Będziesz oczywiście potrzebował dostępu do zdalnego repozytorium, aby również zastosować tę zmianę.
Zobacz to pytanie: Git: usuwanie wybranych zatwierdzeń z repozytorium
źródło
Spróbuj użyć
Uwaga: tutaj identyfikator zatwierdzenia będzie identyfikatorem zatwierdzenia, do którego chcesz przejść, ale nie identyfikatorem, który chcesz zresetować. to był jedyny punkt, w którym również utknąłem.
następnie pchnij
źródło
Alternatywnie:
Wymuś odgałęzienie źródłowego zdalnego repozytorium na element nadrzędny ostatniego zatwierdzenia
źródło