2010-09-07 14 views

Odpowiedz

93

git revert tylko tworzy nowy popełnić - można „usunąć” ją git reset --hard HEAD^

+2

Uważaj z 'git reset --hard HEAD ^', ponieważ usunie wszelkie niezamówione zmiany. – Jeremen

+1

Jeśli zrobisz 'git stash' przed' git reset --hard HEAD^'możesz" zapisać "twoje niezamówione zmiany. Po 'git reset --hard HEAD ^' wykonaj 'git stash pop', aby ponownie wczytać niezamówione zmiany do bieżącej gałęzi. – kukko

26

Komenda git revert właśnie tworzy popełnić że cofa inny (bardziej uważać z nim, choć!). Powinieneś móc ponownie uruchomić git revert HEAD, a to cofnie twoje poprzednie cofnięcie i doda do tego inne zatwierdzenie. Lub możesz zrobić git reset --hard HEAD~. Ale uważaj na to ostatnie, ponieważ usuwa dane.

HEAD~ oznacza popełnić przed obecnym HEAD

+5

Nie, nie kasuje danych. Po prostu przesuwa wskaźnik gałęzi. Poprzednie zatwierdzenie nadal istnieje i możesz zobaczyć jego ID, patrząc na 'git reflog' (f.ex.). Zostanie zebrany w ciągu dwóch miesięcy (domyślna konfiguracja), ale możesz wyłączyć automatyczne usuwanie śmieci, a następnie * każdy pojedynczy commit * ty * kiedykolwiek * będzie istnieć na zawsze w tym repozytorium. Nie można do nich dotrzeć za pośrednictwem oddziałów. Ale zawsze można je znaleźć za pomocą 'git fsck', a ja napisałem przepis na przeglądanie wszystkich zatwierdzeń, które używają tego. –

3

jak o powracanie Przywróć?

dziennika Zobacz git i uzyskać tag hash złej revert:

git log -5

następnie wykonaj odwrócić Cofnij się do:

git revert

+5

-1 spowoduje to utworzenie kolejnego zatwierdzenia, które tak naprawdę nie jest tutaj potrzebne – CharlesB

Powiązane problemy