Doteď jsme se zabývali ideálním scénářem: píšete kód, vytváříte commity a zakládáte pull requesty. V praxi ale často něco nevyjde: zapomenete přidat soubor, uděláte překlep ve zprávě commitu nebo zjistíte, že jste se vydali špatným směrem. V tomto článku si ukážeme, jak nejčastější problémy řešit pomocí nástrojů IDE.
Příklady a snímky rozhraní se týkají IDE JetBrains; názvy a umístění akcí se ve vaší verzi mohou lišit. Cvičte v samostatném testovacím repozitáři. V pracovním projektu dodržujte pravidla pro větve, vytváření commitů a odesílání změn.
Když v projektu pracuje Claude Code, uložená historie vám pomůže obnovit předchozí stav. Git ale neukládá každý stisk klávesy: necommitované úpravy můžete ztratit. Než něco vrátíte zpět, zkontrolujte větev, vybrané soubory a dostupnost potřebné kopie.
Rollback - vrácení místních změn
Scénář: upravili jste soubor, ale zjistili jste, že všechny změny jsou špatně. Chcete ho rychle vrátit do stavu z posledního commitu.

Použijte funkci Rollback:
- v levém panelu otevřete kartu
Commit; - v seznamu najděte změněný soubor, který chcete vrátit (nebo vyberte několik souborů);
- klikněte pravým tlačítkem a vyberte
Rollback(nebo klikněte na ikonu zaoblené šipky).
IDE vás upozorní, že přijdete o vybrané místní změny. Nejdřív si prohlédněte diff a uložte vše potřebné. Potvrďte Rollback jen u úprav, které opravdu chcete zahodit, a potom zkontrolujte výsledek. Tímto smažete necommitovanou práci, nevytvoříte její zálohu.
Před použitím Rollbacku oddělte změny agenta od dřívějších úprav ve stejném souboru. Rollback vrátí vybrané soubory do stavu posledního commitu (HEAD) a zahodí připravené i nepřipravené změny. Není to totéž jako git restore bez příznaků: ten načte obsah z indexu a změní pouze pracovní soubory.
Amend - doplnění posledního commitu
Scénář: právě jste klikli na Commit a hned vám došlo, že jste zapomněli přiložit důležitý soubor (třeba aktualizovaný test) nebo jste udělali překlep ve zprávě. Pokud commit ještě není zveřejněný, můžete použít Amend. Samostatný opravný commit je také v pořádku, zvlášť pokud už je historie sdílená.

Chcete-li doplnit nezveřejněný commit, použijte funkci Amend (doplnit nebo opravit):
- v okně
Commitopravte zapomenutý soubor a zaškrtněte políčko vedle něj; - v panelu Commit Message najděte zaškrtávací políčko Amend (nebo ikonu ozubeného kola -> Amend Commit) a zaškrtněte ho;
- IDE doplní zprávu předchozího commitu, kterou můžete upravit;
- klikněte na
Commit.
Amend vytvoří místo předchozího commitu nový, s jiným ID. Starý objekt se neupravuje na místě. Pokud už byl původní commit odeslán a používají ho ostatní, bývá lepší vytvořit samostatnou opravu.
Více o této funkci najdete v oficiálním tutoriálu JetBrains.
Undo Commit
Scénář: vytvořili jste commit, ale ještě jste ho neodeslali přes Push a zjistili jste, že jste spěchali. Chcete, aby commit zmizel z historie, ale změny zůstaly v editoru, abyste mohli pokračovat v práci.
Použijte funkci Undo Commit:
- otevřete historii na kartě
Git -> Logdole; - najděte poslední commit právě v aktuální větvi (HEAD), ne pouze horní řádek celého grafu, a otevřete jeho kontextovou nabídku;
- vyberte
Undo Commit.

Vyberte seznam změn (obvykle Default Changelist) a klikněte na OK. Commit zmizí z historie a soubory se vrátí do okna Commit jako změněné. O nic jste nepřišli a můžete v klidu pokračovat v psaní kódu.
Reset - posun větve a stav souborů
Funkce Reset Current Branch to Here... je výkonný nástroj, který přesune ukazatel vaší větve na libovolný vybraný commit. Podle situace může šetrně vrátit poslední kroky, nebo radikálně odstranit rozbitý kód.
Scénář A - vrácení posledních místních commitů
Vytvořili jste několik místních commitů (před Push) a zjistili jste, že celý tento směr vývoje byl chybný.
- otevřete kartu
Git -> Log; - najděte poslední dobrý commit, ke kterému se chcete vrátit (ten, který byl před sérií chybných commitů);
- klikněte na něj pravým tlačítkem a vyberte
Reset Current Branch to Here....
Scénář B - návrat ke stavu na serveru
Chcete obnovit sledované soubory podle vzdálené větve. Nejdřív si uložte potřebnou místní práci a spusťte Fetch: značka origin/main ukazuje poslední načtený stav, nikoli průběžně aktualizovaný stav serveru. Pokud právě probíhá konfliktní operace, nejdřív ji vyřešte a dokončete, nebo zrušte; nepoužívejte Hard jako univerzální lék.
- otevřete
Git -> Log; - najděte značku vzdálené větve - obvykle jde o commit s fialovým štítkem
origin/main(neboorigin/název_vaší_větve). Jde o poslední známý stav kódu na serveru; - klikněte na tento commit pravým tlačítkem a vyberte
Reset Current Branch to Here....

Režimy resetu
V okně resetu zvolte režim vědomě. Ve všech třech případech se aktuální větev přesune k vybranému commitu, ale s indexem a pracovními soubory se naloží různě:
- Soft zachová pracovní soubory i index. Mixed zachová pracovní soubory, ale nastaví index na vybraný commit: rozdíl zůstane nepřipravený. Jde o různé režimy, i když v obou můžete dál pracovat s obsahem souborů;
- Hard nastaví index i sledované soubory podle vybraného commitu a zničí jejich necommitované změny. Běžné nesouvisející untracked soubory mohou zůstat, ale cesty, které brání obnovení, mohou být odstraněny. Commity se okamžitě nesmažou ze všech úložišť, ale na pozdější záchranu práce se nespoléhejte.
Co dělat po push
Scénář: provedli jste push a až potom jste si všimli chyby.
Jakmile se commit dostane na server, stane se součástí společné historie projektu. Pokus o její přepsání (pomocí Reset nebo Amend) může kolegům způsobit velké problémy - představte si, že už si vaše změny stáhli a začali na nich stavět vlastní práci.
Správné a bezpečné řešení: jednoduše vytvořte nový commit, který chybu opraví, a odešlete ho běžným push. Je to normální praxe. Lineární historie, v níž po chybném kódu následuje srozumitelný opravný commit, zpřehledňuje vývoj projektu celému týmu.
IDE nabízí také speciální funkci Revert Commit. Klikněte pravým tlačítkem na chybný commit v logu Git -> Log a vyberte Revert Commit. IDE vytvoří nový "anti-commit", který provede přesný opak chybné změny (například odstraní přidané řádky).

Revert se hodí, když chcete zveřejněnou změnu zrušit novým commitem. Lze ho použít na kód i text, může ale být v konfliktu s pozdějšími úpravami. Po vyřešení konfliktu zkontrolujte výsledek; u složitých závislostí bývá srozumitelnější samostatná oprava.
Stash / Shelve - dočasné odložení změn
Scénář: právě píšete kód nové funkce, všechny soubory svítí červeně a modře. Najednou přiběhne vedoucí týmu: "Nech všeho, musíme hned opravit chybu ve větvi main." Na main přepnout nemůžete, protože máte nedokončené konfliktní změny. Místní průběžný commit může být podle pravidel projektu v pořádku, ale pokud se vám teď nehodí práci commitovat, můžete ji odložit.
Řešení je dočasně uložit práci do pomyslné krabice. V Gitu se tomu říká Stash, zatímco IDE má vlastní mechanismus Shelve (odložit na polici).
- otevřete okno
Commita vyberte změněné soubory; - vyberte Shelve Changes...; tento postup se týká Shelve, Git Stash se spouští zvlášť;
- zadejte výstižný název této odložené změny a klikněte na Shelve.

Po Shelve zkontrolujte zbývající soubory: odložili jste opravdu všechny potřebné změny? Teď můžete přepnout na main, opravit chybu a uložit výsledek podle pravidel projektu. Pak se vraťte do pracovní větve, otevřete Shelf a vyberte Unshelve.
Pro Git Stash použijte samostatný seznam stash a obnovte potřebný záznam. Jde o jiné úložiště. Běžný stash bez další volby nezahrnuje nové untracked soubory; před přepnutím ověřte, že je uložená všechna potřebná práce. Při obnovení může dojít ke konfliktům, proto soubory znovu zkontrolujte.
Pokročilá práce s logem
Okno Git -> Log není jen seznam commitů, ale také užitečný nástroj pro pátrání.
- Hash commitu je řetězec písmen a číslic, například
a1b2c3d. Jde o jedinečný identifikátor každého snímku vašeho kódu.![Hash commitu v logu]()
- historii můžete filtrovat podle větve, autora, data nebo slova ve zprávě commitu - snadno tak zjistíte, kdo a kdy pracoval na konkrétní části;
- commit, ve kterém byl přidán nebo odstraněn konkrétní řádek kódu, najdete v okně
Logvyhledáváním nejen ve zprávách, ale i v obsahu změn; - klikněte pravým tlačítkem do okraje editoru s čísly řádků a vyberte
Annotate with Git Blame. IDE u každého řádku ukáže, kdo a v kterém commitu ho naposledy změnil. Pak otevřete commit a související diskusi: samotný Blame ukazuje poslední úpravu řádku, ne její důvod.
Nebezpečná zóna - Force Push
Už víme, že měnit odeslané commity není dobrý nápad. Co když jste ale místní historii přesto změnili (například pomocí Undo Commit nebo Amend) a na serveru zůstala starší verze? Při běžném push Git zobrazí chybu a ochrání společnou historii před přepsáním.
Force push dovoluje nahradit vybranou vzdálenou referenci, i když nová historie nenavazuje na předchozí. Nejde o vymazání celého serveru: důsledky závisí na referencích, které odesíláte. Ochrana větve může takové odeslání zakázat.
Force push může ze vzdálené větve odstranit commity, které ve vaší místní historii nejsou. Přepisování společné větve proto vyžaduje samostatnou dohodu týmu. Pro běžnou opravu použijte nový commit nebo Revert.
Typický případ, kdy o force push uvažovat, je vlastní větev po dohodnutém přepsání její historie. I v takovém případě zkontrolujte, zda nepřibyly cizí commity. Volba --force-with-lease navíc ověřuje očekávaný stav vzdálené větve, ale pořád musíte vědět, které commity nahradíte.
Na snímku najdete Force Push v rozbalovací nabídce tlačítka Push. Před použitím ověřte, jaký režim vynuceného odesílání používá vaše verze IDE.

Pokud si nejste na 100 % jistí, co děláte, force push nepoužívejte. Bezpečnější je vytvořit nový opravný commit (nebo použít Revert).
Toto pravidlo platí pro vás i pro Claude Code: přepisovat společnou historii je nebezpečné. Force push nepovažujte za běžný postup a nedovolte ho na sdílených větvích. Pokud Claude navrhne něco, co přepíše historii na serveru, zastavte se a ověřte, zda neexistuje bezpečnější možnost (nový commit, Revert).
Aktualizace projektu
Před novým úkolem zkontrolujte výchozí větev a nedokončené změny. Podle potřeby načtěte aktualizace a prohlédněte si výsledek sloučení. Update Project nezaručuje, že nedojde ke konfliktům; podle nastavení může použít merge nebo rebase.
Po aktualizaci zkontrolujte aktuální větev, seznam commitů a stav souborů. Pokud se objevily konflikty, vyřešte je dřív, než budete pokračovat.
Kontextová nabídka Git Log
Když otevřete kartu Git -> Log a kliknete pravým tlačítkem na libovolný commit, zobrazí se rozsáhlá kontextová nabídka. Pojďme si nejpraktičtější příkazy rozdělit podle toho, k čemu slouží.

Skupina 1 - prohlížení a analýza (bezpečné akce)
Copy Revision Numberzkopíruje jedinečný hash commitu do schránky. Hodí se, když chcete poslat kolegovi odkaz na commit nebo ho uvést v úkolu (Jira, YouTrack);Compare with Localporovná soubor ze starého commitu s tím, co máte právě v editoru. Snadno tak zjistíte, jak tento kód vypadal před měsícem;Show Repository at Revisionotevře strukturu všech souborů projektu ve stavu, v jakém byly při tomto commitu (aktuální větev se přitom nezmění).
Skupina 2 - práce s větvemi
New Branch...vytvoří novou větev přímo z vybraného staršího commitu. Hodí se, když jste se dostali příliš daleko, všechno pokazili a chcete začít novou větev od posledního funkčního bodu;Checkout Revisionpřepne místní projekt na tento commit. Dostanete se do stavu odpojené hlavy (detached HEAD): starý kód můžete spustit, nové commity se ale nepřiřadí k žádné větvi. Pokud v detached HEAD vytvoříte potřebné commity, nejdřív je uložte do nové větve. Zpět se vrátíte přes Checkout běžné větve (napříkladmain).
Skupina 3 - změny a přenos
Cherry-Pickumožňuje převzít jeden konkrétní commit z jiné větve a zkopírovat ho do aktuální. Například někdo v jiné větvi opravil chybu, která vám blokuje práci - pomocí Cherry-Picku převezmete tento commit, aniž byste slučovali celou cizí větev;Edit Commit Message...umožní rychle přejmenovat zprávu commitu, pokud ještě nebyl odeslán (neproběhl Push). Když chcete změnit jen text, je to pohodlnější než Amend.
Skupina 4 - vrácení změn
Tyto příkazy jsme podrobně probrali výše:
Reset Current Branch to Here...přesune aktuální větev na tento commit (změní historii dostupnou z této větve);Revert Commitvytvoří "anti-commit", který zruší změněný obsah novým místním commitem. Ten pak odešlete na server;Undo Commit...vrátí místní commit zpět do okna změn.
Skupina 5 - přepisování historie
V nabídce jsou i příkazy jako Squash Commits... (sloučí několik commitů do jednoho), Drop Commits (odstraní commit z prostředku historie) nebo Interactively Rebase from Here.... Jde o nástroje pro pečlivé úpravy místní historie (Interactive Rebase).
Dokud se s Gitem teprve seznamujete, tyto příkazy raději nepoužívejte - mohou přepsat vybrané commity i následující část historie větve. Týmy je běžně používají k úpravě rozpracované místní větve před předáním na code review (vytvořením pull requestu).
Git - vaše záchranná síť
Způsob obnovy vybírejte podle stavu úkolu: necommitované soubory, místní commity a zveřejněná historie vyžadují různé kroky. Uložená potřebná verze a kontrola změn před operací jsou užitečnější než naděje, že půjde každou chybu vrátit.
Jak to funguje s Claude Code
Když v projektu pracuje Claude Code, jsou tyto nástroje vaší hlavní pojistkou. Používejte je takto:
- vytvářejte commity často: každý commit je návratový bod. Pokud agent zamíří špatně, vrátíte se k poslednímu funkčnímu stavu;
- při vracení necommitovaných úprav nejprve oddělte potřebné změny a pak v Rollbacku nebo git restore zkontrolujte rozsah i zdroj obnovení;
- pokud už je commit vytvořený, ale nebyl odeslán,
Undo Commitvrátí změny do editoru; - pokud je chyba už na serveru, bezpečnější je nový opravný commit nebo
Revert, ne přepisování historie.
Bez rozmyslu nepotvrzujte akce, které mažou data nebo přepisují historii (Reset hard, force push). Nejdřív se podívejte, co přesně chce Claude Code udělat. Před větším úkolem uložte potřebný stav a ověřte, že návratový bod vaši práci skutečně obsahuje.
Předchozí článek: Pull request od vytvoření po sloučení · Další článek: Vytvoření repozitáře, rebase a tajné údaje

GO TO FULL VERSION