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

Opublikowane przez Tomasz Prasołek w dniu

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

Kategorie: GitPorady

2 Komentarze

Wello · 5 stycznia 2019 o 3 h 03 min

Przeczytane, dzięki

dotnetomaniak.pl · 12 grudnia 2018 o 5 h 04 min

Git: jak cofnąć zmiany wprowadzone przez commit -amend – Tomasz Prasołek

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *