Git revert vs. reset: Ako vrátiť zmeny v projekte

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.

Čo je Git revert a aký má praktický význam?

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?

Príklad použitia 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 

Čo je Git reset a aký má praktický význam?

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?

Príklad použitia 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äť.

Git revert vs. Git reset: Hlavné rozdiely

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)

Najčastejšie otázky

1. Kedy mám použiť git revert namiesto git reset?

Ak ste už zmeny odoslali do vzdialeného repozitára, použite git revert. Git reset je vhodný len na lokálne úpravy.

2. Ako vrátiť git reset?

Ak ste omylom použili git reset --hard, môžete skúsiť obnoviť posledný commit pomocou:

git reflog
git reset --hard 

3. Môžem vrátiť späť viacero commit-ov naraz?

Á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

Top 5 zaujímavých faktov o Git revert a reset

  1. Git revert je bezpečnejší, pretože zachováva históriu zmien.
  2. Git reset môže nenávratne odstrániť dôležitú prácu.
  3. Resetovanie sa neodporúča v tímoch, kde viacerí ľudia pracujú na jednej vetve.
  4. Ak resetujete verejný commit, môže to spôsobiť problémy pri zlúčení kódu.
  5. Revertovanie veľkých zmien môže vyžadovať manuálne riešenie konfliktov.

Chcete sa naučiť programovať?

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.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite so náš ebook teraz výnimočne zdarma!!!

Marián Knězek

 

Súvisiace články: