Przejdź do treści

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.

Baner promujący artykuł

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ć się 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.