Git revert vs. reset: Jak vrátit změny v projektu

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.

Co je Git revert a jaký má praktický význam?

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?

Příklad použití git revert

Chcete-li vrátit poslední commit, použijte:

git revert HEAD

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í:

git log --oneline

Pak spusťte:

git revert

Co je Git reset a jaký má praktický význam?

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?

  • Pokud jste ještě neodeslali změny do vzdáleného repozitáře.
  • Chcete-li zcela odstranit jeden nebo více commit-ů beze stopy v historii.
  • Chcete-li vrátit lokální změny a začít od nuly.

Příklad použití git reset

Soft reset (ponechá změny v pracovním adresáři):

git reset --soft HEAD~1

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):

git reset --mixed HEAD~1

Hard reset (zcela odstraní poslední commit a všechny změny v něm):

git reset --hard HEAD~1

Pozor! Tento příkaz odstraní všechny změny a nelze je vrátit zpět.

Git revert vs. Git reset: Hlavní rozdíly

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)

Nejčastější otázky

1. Kdy mám použít git revert místo git reset?

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.

2. Jak vrátit git reset?

Pokud jste omylem použili git reset --hard, můžete zkusit obnovit poslední commit pomocí:

git reflog git reset --hard

3. Mohu vrátit zpět více commitů najednou?

Ano, při git revert můžete zadat více commit hash-ů:

git revert

U git reset můžete nastavit, o kolik commit-ů se chcete vrátit:

git reset --hard HEAD~3

Top 5 zajímavých faktů o Git revert a reset

  1. Git revert je bezpečnější, protože zachovává historii změn.
  2. Git reset může nenávratně odstranit důležitou práci.
  3. Resetování se nedoporučuje v týmech, kde řada lidí pracuje na jedné větvi.
  4. Pokud resetujete veřejný commit, může to způsobit problémy při sloučení kódu.
  5. Revertování velkých změn může vyžadovat ruční řešení konfliktů.

Chcete se naučit programovat?

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.

Jak začít programovat?

Úvod do programování pro každého bez předchozích znalostí.

Stáhněte si náš ebook teď výjimečně zdarma!!!

Viac informacií preberáme na kurze:

Kurz JAVASE1 - Základy programování v jazyce Java

Marián Knězek