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.
Powiązane artykuły
- Jak dodać nowe polecenie w shellu? Rozszerzamy możliwości Gita
- Własna konfiguracja do TSLint
- Jak zmienić motyw strony za pomocą SCSS na przykładzie trybu ciemnego?
- Testy end-to-end w Continuous Integration
- Git: Używaj typu w Commit Message i zbuduj idealny changelog
- Jak zarządzać baterią w MacBooku? Battery Life Extender
- Jak zwiększyć ilość wolnego miejsca na dysku?
- Dlaczego nie dodajemy do repozytorium Git katalogu node_modules?
- Jak stworzyć Pull Request w terminalu?
- Hexo: Integracja z Google Analytics
- Hexo: Integracja z Disqus
- Jak zmienić domyślny wygląd bloga opartego na Hexo?
- Jak pokonałem Webpacka: Upgrade kilku wersji
- Jak założyć bloga korzystając z Hexo?
- Jak wykorzystać technikę "Man-in-the-middle" na własne potrzeby?
- Jak napisać 'Ź' w WebStorm na macOS?
- Jak usunąć zapytanie HTTP OPTIONS?
- Jak napisać testy end-to-end? Nightwatch.js & Chrome Headless?
- Jak zbudować licznik czasu?
- Jak zbudować widget prezentujący testimoniale?
- Angular: Jak zamockować dane do usługi HTTP?
- Jak wyświetlić liczbę osób lajkujących nasz fanpage?
- EOL w prostych słowach
- Jak przerobić stronę na Progressive Web App?
- Jak zbudować plik PDF na podstawie pliku tekstowego w formacie Markdown?
- Jak stworzyć swój szablon do Cleaver?
- Jak zacząć programować?
- Globalna konfiguracja Gita
- Jak podsłuchać iPhona?
- Jak założyć bloga korzystając z Jekyll?
- Narzędzia usprawniające prace z Git
- Divshot vs GitHub — jako hosting do projektów webowych
- Jak wyłączyć reklamy w systemie?
- Git — początki w najpopularniejszym systemie kontroli wersji
- CoffeeScript + Windows
- Jak stworzyć przyjazne linki w WordPress?