Doteraz sme sa venovali ideálnemu scenáru: píšete kód, vytvárate commity a otvárate Pull Request. V praxi sa však často niečo pokazí: zabudnete pridať súbor, v správe commitu urobíte preklep alebo zistíte, že ste sa vybrali nesprávnym smerom. V tomto článku si ukážeme, ako najčastejšie problémy riešiť pomocou nástrojov IDE.
Príklady a snímky rozhrania sa týkajú IDE JetBrains; názvy a umiestnenie akcií sa vo vašej verzii môžu líšiť. Na cvičenia použite samostatný výučbový repozitár. V pracovnom projekte dodržiavajte jeho pravidlá pre vetvy, zaznamenávanie a odosielanie zmien.
Keď v projekte pracuje Claude Code, uložená história vám pomôže obnoviť predchádzajúci stav. Git však nezaznamenáva každé stlačenie klávesu: o necommitnuté úpravy môžete prísť. Pred vrátením zmien skontrolujte vetvu, vybrané súbory a to, či máte potrebnú kópiu.
Rollback - vrátenie lokálnych zmien
Scenár: upravili ste súbor, no zistili ste, že všetky zmeny sú nesprávne, a chcete ho rýchlo vrátiť do stavu posledného commitu.

Použite funkciu Rollback:
- na ľavom paneli otvorte kartu
Commit; - v zozname nájdite upravený súbor (alebo označte viacero súborov), ktorý chcete vrátiť;
- kliknite pravým tlačidlom a vyberte
Rollback(alebo kliknite na ikonu zaoblenej šípky).
IDE vás upozorní, že vybrané lokálne zmeny sa stratia. Najprv si prezrite diff a uložte si všetko potrebné. Rollback potvrďte len pri zmenách, ktorých sa naozaj chcete zbaviť, a potom skontrolujte výsledok. Ide o odstránenie necommitnutej práce, nie o jej zálohovanie.
Pred použitím Rollback oddeľte zmeny agenta od predchádzajúcich úprav v tom istom súbore. Rollback vráti vybrané súbory do stavu posledného commitu (HEAD) a zahodí pripravené aj nepripravené zmeny. Nie je to to isté ako git restore bez prepínačov: ten preberie obsah z indexu a zmení iba pracovné súbory.
Amend - doplnenie posledného commitu
Scenár: práve ste klikli na Commit a hneď ste si uvedomili, že ste zabudli priložiť dôležitý súbor (napríklad aktualizovaný test) alebo ste urobili preklep v správe. Ak commit ešte nie je zverejnený, môžete použiť Amend. Samostatný opravný commit je tiež v poriadku, najmä ak ide o históriu, ktorú už zdieľate s ostatnými.

Ak chcete doplniť nezverejnený commit, použite funkciu Amend (doplniť alebo opraviť):
- v okne
Commitopravte zabudnutý súbor a začiarknite políčko vedľa neho; - na paneli Commit Message nájdite začiarkavacie políčko Amend (alebo ikonu ozubeného kolieska -> Amend Commit) a označte ho;
- IDE načíta správu predchádzajúceho commitu, ktorú môžete upraviť;
- kliknite na
Commit.
Amend vytvorí nový commit s iným identifikátorom, ktorý nahradí predchádzajúci. Starý objekt sa neupraví priamo. Ak ste predchádzajúci commit už odoslali a ostatní s ním pracujú, zvyčajne je lepšie vytvoriť samostatnú opravu.
Viac o tejto funkcii nájdete v oficiálnom návode JetBrains.
Undo Commit
Scenár: vytvorili ste commit, ale ešte ste ho neodoslali cez Push a uvedomili ste si, že ste sa ponáhľali. Chcete odstrániť commit z histórie, no ponechať zmeny v editore a pokračovať v práci.
Použite funkciu Undo Commit:
- otvorte históriu - kartu
Git -> Logv dolnej časti okna; - nájdite posledný commit aktuálnej vetvy (HEAD), nie iba horný riadok celého grafu, a otvorte jeho kontextové menu;
- vyberte
Undo Commit.

Vyberte zoznam zmien (zvyčajne Default Changelist) a kliknite na OK. Commit zmizne z histórie a súbory sa vrátia do okna Commit ako upravené. O nič ste neprišli a môžete pokojne pokračovať v písaní kódu.
Reset - presun vetvy a stav súborov
Funkcia Reset Current Branch to Here... je výkonný nástroj, ktorý presunie ukazovateľ vetvy na ľubovoľný vybraný commit. Podľa situácie môže jemne vrátiť posledné kroky alebo radikálne odstrániť pokazený kód.
Scenár A - vrátenie posledných lokálnych commitov
Vytvorili ste lokálne niekoľko commitov (pred Push) a zistili ste, že celý tento smer vývoja bol chybný.
- otvorte kartu
Git -> Log; - nájdite posledný dobrý commit, na ktorý sa chcete vrátiť (ten, ktorý bol pred sériou chybných);
- kliknite naň pravým tlačidlom a vyberte
Reset Current Branch to Here....
Scenár B - návrat do stavu na serveri
Chcete obnoviť sledované súbory podľa vzdialenej vetvy. Najprv si uložte potrebnú lokálnu prácu a vykonajte Fetch: značka origin/main zobrazuje naposledy načítaný stav, nie priebežne aktualizovaný stav servera. Ak práve prebieha konfliktná operácia, najprv ju vyriešte a dokončite alebo zrušte; nepoužívajte Hard ako univerzálnu nápravu.
- otvorte
Git -> Log; - nájdite značku vzdialenej vetvy - zvyčajne ide o commit s fialovým štítkom
origin/main(aleboorigin/názov_vašej_vetvy). Je to posledný známy stav kódu na serveri; - kliknite na tento commit pravým tlačidlom a vyberte
Reset Current Branch to Here....

Režimy resetu
V okne resetu si režim vyberte vedome. Vo všetkých troch prípadoch sa aktuálna vetva presunie k vybranému commitu, no s indexom a pracovnými súbormi to dopadne rôzne:
- Soft zachová pracovné súbory aj index. Mixed zachová pracovné súbory, ale nastaví index podľa vybraného commitu: rozdiel zostane nepripravený. Sú to odlišné režimy, hoci v oboch môžete ďalej pracovať s obsahom súborov;
- Hard nastaví index aj sledované súbory podľa vybraného commitu a zničí ich necommitnuté úpravy. Bežné nesúvisiace untracked súbory môžu zostať, no cesty, ktoré prekážajú obnoveniu, sa môžu odstrániť. Commity sa hneď nevymažú zo všetkých úložísk, ale nespoliehajte sa, že sa vám neskôr podarí prácu zachrániť.
Čo robiť po push
Scenár: vykonali ste push a až potom ste si všimli chybu.
Keď sa commit dostane na server, stane sa súčasťou spoločnej histórie projektu. Pokus prepísať túto históriu (pomocou Reset alebo Amend) môže kolegom poriadne skomplikovať prácu - predstavte si, že si už stiahli vaše zmeny a začali na nich stavať.
Správne a bezpečné riešenie: jednoducho vytvorte nový commit, ktorý chybu opraví, a odošlite ho bežným push. Je to normálna prax. Lineárna história, v ktorej po chybnom kóde nasleduje zrozumiteľný opravný commit, spriehľadní vývoj projektu pre celý tím.
V IDE je aj špeciálna funkcia Revert Commit. Ak kliknete pravým tlačidlom na chybný commit v protokole Git -> Log a vyberiete Revert Commit, IDE vytvorí nový "anti-commit", ktorý vykoná presný opak chybného commitu (napríklad odstráni pridané riadky).

Revert sa hodí, keď chcete zrušiť zverejnenú zmenu novým commitom. Funguje pre kód aj text, no môže sa dostať do konfliktu s neskoršími úpravami. Po vyriešení konfliktu skontrolujte výsledok; pri zložitej závislosti môže byť zrozumiteľnejšia samostatná oprava.
Stash / Shelve - dočasné odloženie zmien
Scenár: intenzívne píšete kód novej funkcie a všetky súbory svietia načerveno a namodro. Zrazu príde vedúci tímu: "všetko nechaj, treba urgentne opraviť bug vo vetve main". Na main sa nedá prepnúť, pretože máte nedokončené konfliktné zmeny. Podľa pravidiel projektu môžete vytvoriť priebežný lokálny commit, no ak vám teraz nevyhovuje prácu zaznamenať, môžete ju odložiť.
Riešením je dočasne odložiť prácu do virtuálnej schránky. V Gite sa to volá Stash a IDE má samostatný mechanizmus Shelve (odložiť na poličku).
- otvorte okno
Commita označte upravené súbory; - vyberte Shelve Changes...; tieto kroky sa týkajú funkcie Shelve, Git Stash sa spúšťa samostatne;
- zadajte zrozumiteľný názov tejto záložky a kliknite na Shelve.

Po použití Shelve skontrolujte zostávajúce súbory: odložili sa naozaj všetky potrebné zmeny? Teraz môžete prejsť na main, opraviť chybu a uložiť výsledok podľa pravidiel projektu. Potom sa vráťte do pracovnej vetvy, otvorte Shelf a vyberte Unshelve.
Pre Git Stash použite samostatný zoznam stash a obnovte potrebný záznam. Ide o iné úložisko. Bežný stash bez dodatočnej voľby nezahŕňa nové untracked súbory; pred prepnutím sa uistite, že máte uloženú všetku potrebnú prácu. Obnovenie môže vyvolať konflikt, preto potom súbory znova skontrolujte.
Pokročilá práca s protokolom
Okno Git -> Log nie je iba zoznam commitov, ale aj užitočný nástroj na vyšetrovanie zmien.
- Hash commitu - reťazec písmen a číslic, napríklad
a1b2c3d. Ide o jedinečný identifikátor každej snímky vášho kódu.![Hash commitu v protokole]()
- históriu môžete filtrovať podľa vetvy, autora, dátumu alebo slova v správe commitu - rýchlo tak zistíte, kto a kedy pracoval na konkrétnej časti;
- ak chcete nájsť commit, v ktorom bol pridaný alebo odstránený konkrétny riadok kódu, v okne
Logmôžete hľadať nielen v správach, ale aj v obsahu zmien; - kliknite pravým tlačidlom na okraj editora s číslami riadkov a vyberte
Annotate with Git Blame- IDE pri každom riadku ukáže, kto a v ktorom commite ho naposledy menil. Potom otvorte commit a súvisiacu diskusiu: samotný Blame ukáže poslednú úpravu riadka, ale nevysvetlí jej dôvod.
Riziková zóna - Force Push
Už vieme, že meniť odoslané commity nie je dobrý nápad. Čo ak ste však predsa len zmenili lokálnu históriu (napríklad pomocou Undo Commit alebo Amend), zatiaľ čo na serveri zostala stará verzia? Pri bežnom push Git zobrazí chybu a ochráni spoločnú históriu pred prepísaním.
Force push umožňuje nahradiť vybraný vzdialený odkaz, aj keď nová história nepokračuje v tej pôvodnej. Nevymaže celý server: následky závisia od odosielaných odkazov. Ochrana vetvy môže takéto odoslanie zakázať.
Force push môže zo vzdialenej vetvy odstrániť commity, ktoré nemáte v lokálnej histórii. Preto si prepísanie spoločnej vetvy vyžaduje samostatnú dohodu tímu. Na bežnú opravu použite nový commit alebo Revert.
Force push sa najčastejšie zvažuje pri vlastnej vetve po dohodnutom prepísaní jej histórie. Aj vtedy skontrolujte, či v nej nepribudli cudzie commity. Voľba --force-with-lease pridáva kontrolu očakávaného stavu vzdialenej vetvy, no stále musíte vedieť, ktoré commity nahradíte.
Na snímke sa Force Push nachádza v rozbaľovacej ponuke tlačidla Push. Pred použitím skontrolujte, ktorý režim núteného odoslania používa vaša verzia IDE.

Ak si nie ste na 100 % istí, čo robíte, force push nepoužívajte. Bezpečnejšie je vytvoriť nový commit s opravami (alebo použiť Revert).
Toto pravidlo platí rovnako pre vás aj pre Claude Code: prepisovať spoločnú históriu je riskantné. Nepovažujte force push za bežný postup a nedovoľte ho spúšťať na spoločných vetvách. Ak Claude navrhne niečo, čo prepíše históriu na serveri, zastavte sa a overte, či existuje bezpečnejšia možnosť (nový commit, Revert).
Aktualizácia projektu
Pred začatím novej úlohy skontrolujte zdrojovú vetvu a nedokončené zmeny. Keď treba, načítajte aktualizácie a prezrite si výsledok zlúčenia. Update Project nezaručuje, že nevzniknú konflikty, a podľa nastavení môže použiť merge alebo rebase.
Po aktualizácii skontrolujte aktuálnu vetvu, zoznam commitov a stav súborov. Ak vznikli konflikty, vyriešte ich pred pokračovaním v úlohe.
Kontextové menu Git Log
Keď otvoríte kartu Git -> Log a kliknete pravým tlačidlom na ľubovoľný commit, zobrazí sa rozsiahle kontextové menu. Pozrime sa na najužitočnejšie príkazy a rozdeľme ich podľa úloh.

Skupina 1 - prezeranie a analýza (bezpečné akcie)
Copy Revision Number- skopíruje jedinečný hash commitu do schránky. Hodí sa, keď chcete poslať kolegovi odkaz na commit alebo ho uviesť v úlohe (Jira, YouTrack);Compare with Local- porovná súbor zo starého commitu s tým, čo máte práve v editore. Skvelý spôsob, ako zistiť, ako tento kód vyzeral pred mesiacom;Show Repository at Revision- otvorí štruktúru všetkých súborov projektu v stave, v akom boli v čase tohto commitu (aktuálna vetva sa pritom nezmení).
Skupina 2 - práca s vetvami
New Branch...- vytvorí novú vetvu priamo z vybraného staršieho commitu. Nenahraditeľné, keď ste zašli príliš ďaleko, zistili ste, že ste všetko pokazili, a chcete začať novú vetvu od posledného funkčného bodu;Checkout Revision- prepne lokálny projekt na tento commit. Dostanete sa do stavu odpojenej hlavy (detached HEAD): môžete spustiť starý kód, ale nové commity sa nepriradia k žiadnej vetve. Ak ste v detached HEAD vytvorili potrebné commity, najprv ich zachovajte v novej vetve. Ak sa chcete vrátiť, vykonajte Checkout bežnej vetvy (napríkladmain).
Skupina 3 - zmena a prenesenie
Cherry-Pick- umožňuje vytiahnuť konkrétny commit z inej vetvy a skopírovať ho do aktuálnej. Napríklad niekto v inej vetve opravil bug, ktorý vám blokuje prácu - Cherry-Pickom prenesiete tento commit k sebe bez zlúčenia celej cudzej vetvy;Edit Commit Message...- ak ste commit ešte neodoslali (neprebehol Push), môžete rýchlo premenovať jeho správu. Je to pohodlnejšie ako Amend, ak chcete zmeniť iba text.
Skupina 4 - vrátenie zmien
Tieto príkazy sme podrobne rozobrali vyššie:
Reset Current Branch to Here...- posunie aktuálnu vetvu na tento commit (a zmení históriu dostupnú z tejto vetvy);Revert Commit- vytvorí "anti-commit", ktorý vráti zmenený obsah novým lokálnym commitom, neskôr odoslaným na server;Undo Commit...- vráti lokálny commit späť do okna zmien.
Skupina 5 - prepisovanie histórie
V menu nájdete aj príkazy ako Squash Commits... (zlúčenie viacerých commitov do jedného), Drop Commits (odstránenie commitu zo stredu histórie) alebo Interactively Rebase from Here.... Sú to nástroje na precíznu úpravu lokálnej histórie (Interactive Rebase).
Kým si na Git ešte len zvykáte, radšej tieto príkazy nepoužívajte - môžu prepísať vybrané commity aj nasledujúcu časť histórie vetvy. V tímovej práci sa používajú na upratanie rozpracovanej lokálnej vetvy predtým, ako ju pošlú na review (vytvorením Pull Requestu).
Git - vaša záchranná sieť
Spôsob obnovy vyberajte podľa stavu úlohy: necommitnuté súbory, lokálne commity a zverejnená história si vyžadujú odlišný postup. Uložiť si potrebnú verziu a pred operáciou si prezrieť zmeny je užitočnejšie než dúfať, že sa každá chyba dá vrátiť.
Ako to funguje s Claude Code
Keď v projekte pracuje Claude Code, tieto nástroje sú vašou hlavnou ochranou. Používajte ich takto:
- vytvárajte commity často: každý commit je bod návratu. Ak agent odbočí nesprávnym smerom, vrátite sa k poslednému funkčnému stavu;
- ak chcete vrátiť necommitnuté zmeny, najprv oddeľte tie potrebné a potom v Rollback alebo git restore skontrolujte rozsah aj zdroj obnovy;
- ak ste commit vytvorili, ale ešte neodoslali,
Undo Commitvráti zmeny do editora; - ak je chyba už na serveri, bezpečnejší je nový opravný commit alebo
Revert, nie prepisovanie histórie.
Bez rozmyslu neschvaľujte akcie, ktoré odstraňujú dáta alebo prepisujú históriu (Reset hard, force push). Najprv sa pozrite, čo presne chce Claude Code urobiť. Pred väčšou úlohou si uložte potrebný stav a overte, že bod návratu naozaj obsahuje vašu prácu.
Predchádzajúci článok: Pull request od vytvorenia po zlúčenie · Nasledujúci článok: Vytvorenie repozitára, rebase a tajné údaje

GO TO FULL VERSION