Git: jak cofnąć zmiany wprowadzone przez commit –amend

Wyobraź sobie sytuację, że dodałeś coś do istniejącego commita poleceniem git comit amend, ale jednak chciałbyś tę zmianę cofnąć. I co teraz?

Z pomocą przychodzi git reflog. Polecenie to pokazuje Nam historię tego co robiliśmy  w repozytorium: commity, zmiany branchy, informacje o zrobionych mergach oraz inne przydatne informacje. Więcej informacji można znaleźć w dokumentacji: git reflog

W momencie jak chcemy cofnąć zmiany wprowadzone przez git commit --amend wykonujemy polecenie:

git reflog -15

To nam pokażę historię ostatnich 15 zmian.

git commit amend

Widać, że ostatnia zmiana HEAD@{0} to nasze dodanie zmian do poprzedniego commita. Czyli, aby cofnąć te zmiany musimy być w miejscu HEAD@{1}.

Do tego celu wystarczy użyć polecenia: git reset. Pozostaje tylko pytanie czy chcemy te zmiany (które wprowadzliśmy przez git commit --amend) zachować czy może je usunąć.

Jeśli chcemy je zachować wykonujemy polecenie:

git reset --soft HEAD@{1}

Jeśli na tych zmianach Nam nie zależy wykonujemy:

git reset --hard HEAD@{1}

Przełącznik --soft wrzuci Nam te zmiany do stage’a, a --hard usunie.
Soft:
git reset soft head

Hard:
git reset hard head

Fajne graficznie porównanie między tymi opcjami znalazłem na StackOverflow:
git reset soft hard difference

I to tyle 🙂 Przy odrobinie większej znajomości gita nie trzeba się obawiać żadnych wprowadzonych niepotrzebnie zmian. Dużo rzeczy można cofnąć lub zmienić.

Jeśli spodobał Ci się ten wpis i chcesz otrzymywać powiadomienia o nowych treściach dotyczących zagadnień związanych z Gitem, to zachęcam do subskrypcji mojego bloga.

Dodaj komentarz

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