V Git-e může nastat situace, kdy potřebujete vrátit změny – ať už z neúmyslného commit-u, nebo kvůli chybám v kódu. Git nabízí dva hlavní způsoby opravy těchto situací: git revert a git reset. Přestože na první pohled mohou působit podobně, jejich fungování je zcela odlišné. V tomto článku se podíváme na jejich rozdíly a použití v reálných scénářích.
Git revert je způsob, jak zvrátit konkrétní commit bez ztráty historie. Namísto odstranění commit-u vytvoří nový commit, který neguje změny předchozího commit-u.
Kdy použít git revert?
Chcete-li vrátit poslední commit, použijte:
Git vytvoří nový commit, který vrátí všechny změny z předchozího commit-u.
Chcete-li vrátit konkrétní commit, zjistěte jeho hash pomocí:
Pak spusťte:
Git reset umožňuje odstranit commity ze současné větve a vrátit se do předchozího stavu. Na rozdíl od revertu neuchovává historii zrušených změn.
Kdy použít git reset?
Soft reset (ponechá změny v pracovním adresáři):
Vrací se o jeden commit zpět, ale ponechá všechny změny ve staging oblasti.
Mixed reset (ponechá změny v pracovním adresáři, ale odstraní je ze staging oblasti):
Hard reset (zcela odstraní poslední commit a všechny změny v něm):
Pozor! Tento příkaz odstraní všechny změny a nelze je vrátit zpět.
Funkce | Git revert | Git reset |
---|---|---|
Zachovává historii commit-ů? | Ano | Ne |
Vhodné pro vzdálený repozitář? | Ano | Ne |
Odstraňuje stávající commity? | Ne | Ano |
Možnost návratu po provedení? | Ano | Ne (při hard resetu) |
Pokud jste již změny odeslali do vzdáleného repozitáře, použijte git revert. Git reset je vhodný pouze pro lokální úpravy.
Pokud jste omylem použili git reset --hard, můžete zkusit obnovit poslední commit pomocí:
Ano, při git revert můžete zadat více commit hash-ů:
U git reset můžete nastavit, o kolik commit-ů se chcete vrátit:
Máte-li zájem o prezenční nebo online školení programování, podívejte se na naši nabídku na www.like-it.sk. Naše kurzy vedou zkušení odborníci, kteří vás naučí programovat od základů až po pokročilé techniky.
Viac informacií preberáme na kurze: