Polski frontend

Piotr Kowalski — JavaScript, Front-end oraz Node.js

Git: Jak usunąć rewizję?

Miałeś kiedyś problem, aby usunąć przedostatni commit? Dziś o tym, jak usunąć dowolną rewizję z Git-a na 2 sposoby.

Krok po kroku

Na początku przedstawiam historię repozytorium:

git log --oneline 09ee68e Rewizja 4 (HEAD) 60c495b Rewizja 3 6e45e15 Rewizja 2 749fcaa Rewizja 1 Do czego dążymy?

Zdefiniujmy cel zadania, aby wszystko było jasne:

Cel

Usunięcie commita o id=60c495b, który ma commit message “Rewizja 3”.

Realizacja

Skorzystajmy z polecenia git rebase, które jest w stanie zarządzić historią.

1. Cofamy się o dwa commity, czyli do “Rewizja 1” git rebase -i 749fcaa

Po tej linijce powinien uruchomić się domyślny edytor.

Wskazówka

Jak zmienić domyślny edytor? Nadpisz zmienną środowiskową $EDITOR za pomocą polecenie: export EDITOR="nano"

2. (dla starych wersji Gita) Usuwamy linijkę z commitem pick 749fcaa - Rewizja 1 pick 6e45e15 - Rewizja 2 pick 09ee68e - Rewizja 4 2. (dla nowych wersji Gita) Ustawiamy stan commita na drop pick 749fcaa - Rewizja 1 pick 6e45e15 - Rewizja 2 drop 60c495b - Rewizja 3 pick 09ee68e - Rewizja 4 3. Zapisujemy plik oraz wychodzimy z edytora

Naszym oczom powinien ukazać sie komunikat w stylu:

Successfully rebased and updated refs/heads/master.

Efekt końcowy jest następujący:

Nie ma rewizji w historii, Nie ma zmian wprowadzanych przez usuniętą rewizję. Dla przypomnienia

W edytorze Vim plik zapisujemy za pomocą polecenie :w (write), natomiast opuszczamy edytor za pomocą :q (quit). Powyższe polecenia można uruchomić za pomocą jednego: :wq.

⭐️ Ćwiczenie dodatkowe

Spróbuj zmienić kolejność rewizji, tak aby git log --oneline pokazywał inną niż pierwotnie historię rewizji.

Hint

Gdy będzie otwarty edytor, zmień kolejność linijek z rewizjami.