ODWRACALNA metoda odrzucenia wszystkich zmian:
Znalazłem to pytanie po dokonaniu scalenia i zapomnieniu o kasie, pojawiło się zaraz potem. Zgadłeś: zacząłem modyfikować kilka plików bezpośrednio na master . D'Oh! Ponieważ moja sytuacja nie jest wyjątkowa (wszyscy to zrobiliśmy, prawda; ->), zaoferuję odwracalny sposób, w jaki zwykłem odrzucać wszystkie zmiany, aby mistrz wyglądał jak rozwijaj się ponownie.
Po zrobieniu a git diff
żeby zobaczyć jakie pliki zostały zmodyfikowane i ocenić zakres mojego błędu wykonałem:
git stash
git stash clear
Po pierwszym zachowaniu wszystkich zmian, zostały one następnie usunięte. Wszystkie zmiany wprowadzone w plikach z błędem wzorcowym zniknęły i przywrócono parzystość.
Powiedzmy, że chciałem teraz przywrócić te zmiany. Mogę to zrobić. Pierwszym krokiem jest znalezienie skrótu skrytki, którą właśnie wyczyściłem / upuściłem:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Po nauczeniu się skrótu pomyślnie przywróciłem niezatwierdzone zmiany za pomocą:
git stash apply hash-of-cleared-stash
Naprawdę nie chciałem przywracać tych zmian, chciałem tylko sprawdzić, czy mogę je odzyskać, więc ponownie je wyczyściłem.
Inną opcją jest przeniesienie skrytki do innej gałęzi , zamiast wymazywania zmian. Więc jeśli chodzi o usuwanie zmian dokonanych podczas pracy na niewłaściwej gałęzi, stash
daje ci dużą elastyczność w odzyskaniu sprawności po twoim boo-boo.
W każdym razie, jeśli chcesz odwracalnego sposobu usuwania zmian w gałęzi, powyższe jest mniej niebezpiecznym sposobem w tym przypadku użycia.
git reset --hard HEAD^