Pracuję w gałęzi (tj. design
) I dokonałem wielu zmian, ale muszę je wszystkie odrzucić i zresetować, aby pasowała do wersji repozytorium. Myślałem, że git checkout design
to zrobię, ale po prostu mówi mi, że jestem już w gałęzi design
i mam 3 zmodyfikowane pliki.
Jak odrzucić te zmiany i uzyskać gałąź, która jest teraz na serwerze zdalnym?
git reset --hard HEAD^
git reset --hard HEAD^
naprawdę powinna być akceptowaną odpowiedzią. OP nie pytał o inne branże ...źródło
git rm [branch name].diff
Jeśli nie chcesz żadnych zmian
design
i na pewno chcesz, aby pasował tylko do gałęzi zdalnego, możesz także po prostu usunąć gałąź i utworzyć ją ponownie:źródło
@Will, git immersion to naprawdę fajny i prosty samouczek git. pokaże ci, jak cofnąć zmiany w następujących przypadkach: niestacjonarnych, wystawionych i zatwierdzonych. laboratoria 14-18
źródło
Ruby
zostać zainstalowane ... co nie zawsze wydaje się wyboremJeśli chcesz odrzucić zmiany w lokalnym oddziale, możesz je ukryć za pomocą polecenia git stash.
git stash save "some_name"
Twoje zmiany zostaną zapisane i możesz je później odzyskać, jeśli chcesz, lub możesz je usunąć. Po wykonaniu tej czynności Twoja gałąź nie będzie zawierała żadnego niezatwierdzonego kodu i możesz pobrać najnowszy kod z gałęzi głównej za pomocą git pull.
źródło
W źródłowym katalogu głównym:
git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes
źródło
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: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:
Po nauczeniu się skrótu pomyślnie przywróciłem niezatwierdzone zmiany za pomocą:
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.
źródło
git checkout -f
To wystarczy na twoje pytanie. Jedyną rzeczą jest to, że kiedy już to zrobione, to się skończy Nie można cofnąć.
źródło