Rozważ ten scenariusz:
- Programista A wykonuje zatwierdzenie: #n
- Dev. B zatwierdza # n + 1
- Dev. A zatwierdza # n + 2
- i zatwierdź # n + 3
a potem odkrywa, że w swoim zatwierdzeniu # n + 2 wprowadził defekt.
Jak można dev. Cofnąć ostatnie 2 zatwierdzenia i kontynuować rozwój po zatwierdzeniu nr n + 1 ?
Próbowałem git reset --hard HEAD~2
* , ale wraca do zatwierdzenia Dev A #n .
commit
# n + 1, [1] Acommit
ted # n + 2, [2] nieudanypush
, [3]pull
, [4]push
. Tak więc na githubie jest teraz zatwierdzenie (# n + 2) i 'master' gałęzi Merge (# n + 3).Odpowiedzi:
Powinien wrócić do zatwierdzenia n + 1. Prawdopodobnie masz tam również zatwierdzenie scalające. Możesz także zrobić
git reset --hard <sha1_of_where_you_want_to_be>
źródło
git reflog
, ale mam dostęp tylko do moich lokalnych informacjigit log
, alegit push -f
było też wymagane, więc modyfikacje zostaną odzwierciedlone na githubie.--hard
oznacza, że wszelkie niezatwierdzone zmiany, które obecnie posiadasz, zostaną trwale wyrzucone. Aby wrócić do poprzedniego zatwierdzenia bez wyrzucania swojej pracy, użyj--soft
.