Jak cofnąć ostatnie zatwierdzenie Git

Jeśli jesteś programistą lub inżynierem oprogramowania, jest bardzo prawdopodobne, że wysyłasz dużo zatwierdzeń do swojego Gita repozytorium codziennie.

Jednak w niektórych przypadkach zatwierdziłeś kilka plików, które nie powinny zostać przesłane do repozytorium Git.

Czasami możesz chcieć wprowadzić dodatkowe zmiany przed wydaniem zatwierdzenia .

W konsekwencji musisz cofnąć ostatnie zatwierdzenie z repozytorium Git.

W tym samouczku zobaczymy, jak łatwo cofnąć ostatnie zatwierdzenie, być może aby ponownie zatwierdzić zmiany później.

Spis treści

Cofnij ostatnie zatwierdzenie Git z resetem

Najłatwiejszym sposobem cofnięcia ostatniego zatwierdzenia Git jest wykonanie polecenia „git reset” z opcją „–soft”, która zachowa zmiany wprowadzone w plikach. Musisz określić zatwierdzenie do cofnięcia, które w tym przypadku wynosi „HEAD ~ 1”.

Ostatnie zatwierdzenie zostanie usunięte z historii Git.

Jeśli nie jesteś zaznajomiony z tym zapisem, „HEAD ~ 1” oznacza, że chcesz zresetować HEAD (ostatnie zatwierdzenie) do jednego zatwierdzenia wcześniej w historii dziennika.

Jaki jest więc wpływ tego polecenia?

Polecenie „git reset” można postrzegać jako przeciwieństwo polecenia „git add”, zasadniczo dodając pliki do indeksu Gita.

Podczas określania opcji „–soft”, Git otrzymuje instrukcje, aby w ogóle nie modyfikować plików w katalogu roboczym ani w indeksie.

Jako przykład , powiedzmy, że dodałeś dwa pliki w ostatnim zatwierdzeniu, ale chcesz dokonać pewnych modyfikacji w tym pliku.

W konsekwencji użyjesz „git reset” z opcją „–soft” w celu cofnięcia ostatniego zatwierdzenia i wykonania dodatkowych modyfikacji.

Jak widać, cofając ostatnie zatwierdzenie, plik nadal znajduje się w indeksie (zmiany do zatwierdzenia), ale zatwierdzenie zostało usunięte.

Super, pomyślnie cofnąłeś ostatnie zatwierdzenie Git w swoim repozytorium.

Zatwierdzenie twardego resetu Git

W poprzedniej sekcji widzieliśmy, jak łatwo cofnąć ostatnie zatwierdzenie, zachowując zmiany dokonane w plikach w indeksie.

W niektórych przypadkach po prostu chcesz pozbyć się zatwierdzenia i zmian dokonanych w plikach.

Jest to cel opcji „–hard”.

Aby cofnąć ostatnie zatwierdzenie i odrzucić wszystkie zmiany w katalogu roboczym i indeksie wykonaj polecenie „git reset” z opcją „–hard” i określ zatwierdzenie przed HEAD („HEAD ~ 1”).

Zachowaj ostrożność, używając opcji „–hard”: zmiany zostaną usunięte z katalogu roboczego iz indeksu, utracisz wszystkie modyfikacje.

Wróć do przykładu, który szczegółowo omówiliśmy wcześniej, powiedzmy że zapisałeś nowy plik do repozytorium Git o nazwie „plik1”.

Teraz udawajmy, że chcesz cofnąć ostatnie zatwierdzenie i odrzucić wszystkie modyfikacje.

Świetnie, zobaczmy teraz stan naszego repozytorium Git .

Jak widać, plik został całkowicie usunięty z repozytorium Git (indeks + katalog roboczy)

Mieszany reset Git zatwierdzenie

Aby cofnąć ostatnie zatwierdzenie Gita, zachować zmiany w katalogu roboczym, ale NIE w indeksie, musisz użyć polecenia „git reset” z opcją „–mixed”. Obok tego polecenia po prostu dodaj „HEAD ~ 1” dla ostatniego zatwierdzenia.

Jako przykład, powiedzmy, że dodaliśmy plik o nazwie ” plik1 ”w zatwierdzeniu, które musimy cofnąć.

Aby cofnąć ostatnie zatwierdzenie, po prostu wykonujemy polecenie„ git reset ”z opcją„ –mixed ”.

W przypadku określenia opcji„ –mixed ”plik zostanie usunięty z indeksu Git, ale nie z katalogu roboczego.

W rezultacie„ –mixed ”To„ mieszanka ”pomiędzy miękkim i twardym resetem, stąd jego nazwa.

Świetnie! Znalazłeś inny sposób na cofnięcie ostatniego zatwierdzenia przy zachowaniu zmian dokonanych w plikach.

W następnej sekcji zobaczymy inny sposób na cofnięcie ostatniego zatwierdzenia za pomocą polecenia git revert.

Cofnij ostatnie zatwierdzenie za pomocą polecenia revert

Aby cofnąć ostatnie zatwierdzenie Git użyj opcji „git revert” i określ zatwierdzenie, które ma zostać cofnięte, czyli „HEAD” dla ostatniego zatwierdzenia w historii.

Polecenie „git revert” różni się nieco od polecenia „git reset”, ponieważ zarejestruje nowe zatwierdzenie ze zmianami wprowadzonymi przez cofnięcie ostatniego zatwierdzenia.

Zauważ również, że w przypadku polecenia „git reset ”podałeś„ HEAD ~ 1 ”, ponieważ polecenie reset ustawia nową pozycję HEAD, podczas gdy przywracanie faktycznie przywraca określone zatwierdzenie.

W konsekwencji będziesz musiał ponownie zatwierdzić zmiany, aby pliki były przywrócony i zatwierdzenie do cofnięcia.

W konsekwencji, powiedzmy, że zatwierdziłeś nowy plik do repozytorium Git, ale chcesz cofnąć to zatwierdzenie.

Podczas wykonywania polecenia „git revert” Git automatycznie otworzy edytor tekstu w celu zatwierdzenia zmian.

Kiedy skończysz z komunikatem o zatwierdzeniu, zostanie wyświetlony komunikat z nowym hashem zatwierdzenia.

Teraz, gdybyś ponownie przejrzał historię Git, zauważyłbyś, że dodano nowe zatwierdzenie, aby cofnąć ostatnie zatwierdzenie z repozytorium.

Podsumowanie

W tym samouczku zobaczyłeś wszystkie sposoby na cofnięcie ostatniego zatwierdzenia repozytorium Git.

Dowiedziałeś się o „git reset ”I różne sposoby jego wykonania w zależności od tego, co chcesz zachować lub nie.

Dowiedziałeś się również o różnicy między git reset i git revert, to drugie dodaje nowe zatwierdzenie w kolejności aby przywrócić ten z repozytorium.

Jeśli jesteś ciekawy Gita lub inżynierii oprogramowania eering, mamy pełną sekcję poświęconą temu na stronie, więc koniecznie sprawdź to!

Jeśli lubisz Git, mogą spodobać Ci się nasze inne artykuły:

  • Jak sklonować repozytorium Git
  • Jak wycofać ze sceny pliki Git
  • Jak wybrać Cherry zatwierdzenia Git
git

Write a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *