V Git-e môže nastať situácia, keď potrebujete vrátiť zmeny – či už z neúmyselného commit-u, alebo kvôli chybám v kóde. Git ponúka dva hlavné spôsoby na opravu týchto situácií: git revert a git reset. Hoci na prvý pohľad môžu pôsobiť podobne, ich fungovanie je úplne odlišné. V tomto článku sa pozrieme na ich rozdiely a použitie v reálnych scenároch.
Git revert je spôsob, ako zvrátiť konkrétny commit bez straty histórie. Namiesto odstránenia commit-u vytvorí nový commit, ktorý neguje zmeny predchádzajúceho commit-u.
Kedy použiť git revert?
Ak chcete vrátiť posledný commit, použite:
git revert HEAD
Git vytvorí nový commit, ktorý vráti všetky zmeny z predchádzajúceho commit-u.
Ak chcete vrátiť konkrétny commit, zistite jeho hash pomocou:
git log --oneline
Potom spustite:
git revert
Git reset umožňuje odstrániť commity zo súčasnej vetvy a vrátiť sa do predchádzajúceho stavu. Na rozdiel od revertu neuchováva históriu zrušených zmien.
Kedy použiť git reset?
Soft reset (ponechá zmeny v pracovnom adresári):
git reset --soft HEAD~1
Vracia sa o jeden commit späť, ale ponechá všetky zmeny v staging oblasti.
Mixed reset (ponechá zmeny v pracovnom adresári, ale odstráni ich zo staging oblasti):
git reset --mixed HEAD~1
Hard reset (úplne odstráni posledný commit a všetky zmeny v ňom):
git reset --hard HEAD~1
Pozor! Tento príkaz odstráni všetky zmeny a nie je možné ich vrátiť späť.
Funkcia | Git revert | Git reset |
---|---|---|
Zachováva históriu commit-ov? | Áno | Nie |
Vhodné pre vzdialený repozitár? | Áno | Nie |
Odstraňuje existujúce commity? | Nie | Áno |
Možnosť návratu po vykonaní? | Áno | Nie (pri hard resete) |
Ak ste už zmeny odoslali do vzdialeného repozitára, použite git revert. Git reset je vhodný len na lokálne úpravy.
Ak ste omylom použili git reset --hard, môžete skúsiť obnoviť posledný commit pomocou:
git reflog git reset --hard
Áno, pri git revert môžete zadať viac commit hash-ov:
git revert
Pri git reset môžete nastaviť, o koľko commit-ov sa chcete vrátiť:
git reset --hard HEAD~3
Ak máte záujem o prezenčné alebo online školenie programovania, pozrite si našu ponuku na www.like-it.sk. Naše kurzy vedú skúsení odborníci, ktorí vás naučia programovať od základov až po pokročilé techniky.