Dwa razy popełniłem błąd. Jak przywrócić dwa zatwierdzenia i zatwierdzić tylko dobre rzeczy?Jak przywrócić dwa potwierdzenia i zatwierdzić tylko dobre rzeczy?
Odpowiedz
Możesz zrobić git rebase -i HEAD~2
, a następnie użyć interfejsu, aby odrzucić "złe zatwierdzenia", które są tam od tego czasu i wyczyścić historię. To jednak zmienia historię projektu i jeśli już pchnąłeś (i inne pociągnęły) twoje zmiany, są pewne kwestie społeczne do rozwiązania.
Innymi opcjami są git revert
te zmiany. Następnie do historii zostaną dodane 2 nowe zatwierdzenia, co sprawia, że nie chcesz, aby te dwa zatwierdzenia były jawne w historii projektu. Mniej czysty, ale łatwiejszy w obsłudze.
Moi współpracownicy będą narzekać, że złe zatwierdzenie było tam na samym początku. Lepiej się go pozbyć, zanim spróbujesz scalić gałąź. Dzięki za podanie odpowiedzi 'git rebase -i', a nie tylko" nie chcesz tego robić! " jak wielu ludzi! –
Kolejnym przydatnym poleceniem w tej sytuacji jest 'git push --force', na wypadek, gdybyś już zepchnął złe zatwierdzenie. –
Opcja '--force' jest destrukcyjna. Jeśli ktoś inny wprowadził zmiany na twoich zatwierdzeniach i pchnął je do repozytorium, twoje pchnięcie siłą zniszczy je wszystkie. –
Po pierwsze, git reset HEAD~2
, aby odrzucić dwa pierwsze zatwierdzenia, pozostawiając drzewo robocze dokładnie takie, jakie jest. Następnie, po prostu stwórz nowy commit z tym, czego potrzebujesz (np. Z git add
s, a następnie git commit
).
Aby uzyskać szczegółowe informacje na temat często mylącej kombinacji Reset Demystified przez Scott Chacon, git reset
.
Zrobiłbym to tylko dlatego, że zatwierdzenia są tylko lokalne, jeśli są publiczne, użyłbym przywrócenia dwóch ostatnich zatwierdzeń. – ryanzec
Tak, zakładałem, że OP nie pchnął niepoprawnych zatwierdzeń w dowolnym miejscu. –
- 1. Jak mogę tylko zatwierdzić zmiany w podrepo?
- 2. Formularz AJAX zatwierdzić i przesłać
- 3. GitHub dla Windows: jak zatwierdzić tylko część pliku?
- 4. Jak zapisać i przywrócić formularz?
- 5. Tylko dwa zaokrąglone rogi?
- 6. Jak przywrócić poprzednią wersję kodu w Xcode
- 7. Python Logger rejestruje rzeczy dwa razy na konsolę
- 8. jak połączyć dwa Zestawienia zmian tylko (TFS)
- 9. Jak utworzyć i przywrócić kopię zapasową z SqlAlchemy?
- 10. jak git zatwierdzić cały folder?
- 11. Jak "przywrócić" niezmienione pliki z użyciem mercurial?
- 12. Jak przywrócić istniejące repozytorium za pomocą TortoiseSVN?
- 13. Czy znasz dobre samouczki i dokumenty JMonkeyEngine?
- 14. Jak obsługiwać wysyłanie pakietów/potwierdzenia
- 15. Jak automatycznie kliknąć pole potwierdzenia?
- 16. Jak przywrócić zasoby zasobnika kopii?
- 17. Potwierdzenia błędu dodatniego i ujemnego z wyprzedzeniem
- 18. Github zatwierdzić oznaczanie wiadomości
- 19. potwierdzenia przy użyciu atrybutów
- 20. Jak przywrócić lokalnie usunięty folder?
- 21. Animować rzeczy jak w jQuery?
- 22. Jak skwapliwie zatwierdzić przydzieloną pamięć w C++?
- 23. forma Shell nie zatwierdzić
- 24. jQuery: jak przywrócić dołączany elementu
- 25. Jak przywrócić funkcjonalność indeksowania? (Xcode)
- 26. Jak łatwo zatwierdzić Git w Eclipse Neon
- 27. Jetty's DispatcherType (i 1000 innych nieudokumentowanych rzeczy)
- 28. Git: Jak zatwierdzić ręcznie usunięty plik?
- 29. Jak mogę zatwierdzić grę! Transakcja JPA ręcznie?
- 30. Nie można przywrócić standardowego wyjścia do oryginału (tylko do terminala)
Co to jest dobre rzeczy? Czy mógłbyś bardziej szczegółowo opisać, jak wygląda twoja historia i jak ma wyglądać? – svick
trochę więcej szczegółów pomogłoby w uzyskaniu poprawnej odpowiedzi (dobre rzeczy?) – ryanzec
Usuń wszystkie złe rzeczy zanim zatwierdzisz wszystko inne. –