Visszavonás (Rollback) a fejlesztésben: mi ez, módszerek és hogyan működik

Szerző: IT Sectr Megjelenés: 2026-07-30 Olvasási idő: 7 perc

„Visszavonás” és „rollback” — kifejezések, amelyek a rendszer, kód vagy adatok előző állapotba való visszaállítását jelentik. A fejlesztésben ez egy alapvető művelet, amely be van építve a verziókezelő rendszerekbe, adatbázisokba és telepítési mechanizmusokba. A Git Documentation szerint a visszavonási műveletek lehetnek biztonságosak (revert új commit létrehozásával) és destruktívak (reset a történet elvesztésével). A közöttük lévő különbségek megértése segít elkerülni az adatvesztést az előző verzióra való visszaálláskor.

Főbb pontok

  • Visszavonni — a kód vagy adatok visszaállítása az előző stabil verzióra
  • Git revert új commitot hoz létre, amely visszavonja a változtatásokat — biztonságos visszavonási mód
  • Git reset visszamozgatja az ág mutatóját és törölheti a commitok történetét
  • Rollback az adatbázisban visszavonja a befejezetlen tranzakciót, helyreállítva az adatokat
  • A visszavonási módszer kiválasztása attól függ, hogy egyedül vagy csapatban dolgozik

Mi a visszavonás és rollback a fejlesztésben

Visszavonás (rollback) — a rendszer előző stabil állapotba való visszaállításának művelete. A fejlesztés kontextusában ez jelentheti egy commit visszavonását Git-ben, egy tranzakció visszállítását az adatbázisban vagy az alkalmazás előző verziójának visszaállítását a szerveren. A kifejezés az angol „rollback” szóból származik és szilárdan beépült az összes platform fejlesztőinek szókincsébe.

A visszavonás szükségessége akkor merül fel, amikor egy új változtatás megtöri a funkcionalitást, hibákat okoz vagy nem megy át a minőségellenőrzésen. Egy jól szervezett fejlesztési folyamatban a visszavonás nem a kudarc jele, hanem a munkafolyamatba épített standard eljárás. Minél gyorsabban tudja a csapat visszavonni a problémás változtatást, annál kisebb a hiba hatása a felhasználókra.

Különböző eszközök különböző visszavonási mechanizmusokat kínálnak: Git választást ad a biztonságos revert és a destruktív reset között, az adatbázisok támogatják a tranzakciós rollbacket, a CI/CD rendszerek pedig képesek váltani a forgalmat a verziók között. A megközelítés választása a kontextustól és a változtatások történetének megőrzésére vonatkozó követelményektől függ.

Git revert vs git reset: mi a különbség

Git revert — biztonságos visszavonási mód, amely új commitot hoz létre, visszavonva az előző változtatásait. A történet lineáris marad, az összes régi commit megmarad. Ez az egyetlen helyes választás a közös ágban történő visszavonáshoz, ahol több fejlesztő dolgozik. A git revert parancs nem törli a történetet — hozzáadja a visszavonás tényét új változtatásként.

Git reset az aktuális ág mutatóját a megadott commitra mozgatja, eldobva az összes későbbi változtatást. A zászlótól függően — soft, mixed vagy hard — a reset különbözően kezeli a munkakönyvtárat és az indexet. A hard mód teljesen eltávolítja a változtatásokat a történetből, ami veszélyessé teszi a közös ágak számára és csak helyi munkára alkalmas.

Mikor használjuk a revertet

Revert megosztott ágakban alkalmazzuk: main, develop, release. Megőrzi a történetet és lehetővé teszi más fejlesztők számára, hogy megértsék, egy változtatás vissza lett vonva. Revert után biztonságosan végrehajtható a git pull — a rendszer nem generál az átírt történettel kapcsolatos konfliktusokat. Csapatmunkában a revert az alapértelmezett standard.

bash
# Az utolsó commit visszavonása új commit létrehozásával
git revert HEAD

# Egy adott commit visszavonása hash alapján
git revert a1b2c3d

Mikor használjuk a resetet

Reset helyi ágban alkalmas, ahol még nem publikálta a változtatásokat. Ha kísérletezett és teljesen ki szeretné tisztítani a történetet — a reset hard megteszi. Helyi ágban használhatja a reset mixedet a commitok visszavonására, de a változtatások megtartására a munkakönyvtárban az újracommitoláshoz.

bash
# Az utolsó commit visszavonása, változtatások megtartása a munkakönyvtárban
git reset HEAD~1

# Teljes visszavonás — a változtatások végleg eltávolítva
git reset --hard HEAD~2

Rollback az adatbázisokban: tranzakciók és ACID

Tranzakció rollback — művelet, amely visszavonja az aktuális tranzakció keretében végzett összes változtatást és visszaállítja az adatbázist a kezdeti állapotába. Ez garantálja az atomosságot — az ACID (Atomicity, Consistency, Isolation, Durability) négy alapelvének egyikét. Ha a tranzakció bármelyik szakaszában hiba történik, rollback hajtódik végre és az adatok visszatérnek az eredeti állapotba.

A rollback mechanizmus az előreírási naplón (Write-Ahead Log, WAL) keresztül van megvalósítva. Mielőtt megváltoztatna egy adatoldalt, az ADB régi és új értéket ír a naplóba. Rollbackkor a rendszer olvassa a naplót és visszaállítja az eredeti értékeket az összes módosított oldalhoz. Ez garantálja, hogy áramszünet esetén is helyesen visszavonható a tranzakció.

sql
BEGIN TRANSACTION;

UPDATE accounts
SET balance = balance - 100
WHERE id = 1;

-- Rollback on error
ROLLBACK;

Savepoint: részleges visszavonás

Hosszú tranzakciókban kényelmes a savepoint használata — köztes mentési pontok, amelyekhez visszatérhet anélkül, hogy befejezné a teljes tranzakciót. Ez lehetővé teszi a hibák kezelését egy összetett műveleten belül anélkül, hogy elveszítené a haladást annak más részeiben. A savepointot a legtöbb relációs ADB támogatja: PostgreSQL, MySQL, Oracle.

sql
SAVEPOINT sp1;

UPDATE orders SET status = 'cancelled'
WHERE id = 42;

ROLLBACK TO sp1;

Visszavonás telepítéskor: stratégiák és eszközök

Telepítés visszavonása — a működő alkalmazás visszaállítása az előző verzióra sikertelen telepítés után. Ez kritikus fontosságú képesség az éles környezet számára: a helyreállítási idő (MTTR) közvetlenül befolyásolja az SLA-t és a felhasználói élményt. A modern platformok az architektúrától és a rendelkezésre állási követelményektől függően több visszavonási stratégiát kínálnak.

Blue-green deployment

Blue-green — stratégia, ahol két azonos környezet működik egyszerre: blue (aktuális verzió) és green (új verzió). A forgalom a sikeres telepítés után a greenre irányítódik át. Ha az új verzió helytelenül működik, a forgalomkapcsoló visszatér a bluehoz. A visszavonás azonnal megtörténik, újratelepítés nélkül — elég megváltoztatni az útvonalválasztást.

Canary release automatikus visszavonással

Canary deployment a forgalom egy kis részét az új verzióra irányítja és figyeli a mérőszámokat: hibák száma, válaszidő, sikeres kérések aránya. Ha a mérőszámok romlanak, a rendszer automatikusan visszavonja a canaryt és az összes forgalmat a stabil verzióra irányítja. A Kubernetes és a service meshek (Istio, Linkerd) ezt a stratégiát készből támogatják.

yaml
apiVersion: apps/v1
kind: Deployment
spec:
  replicas: 10
  strategy:
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1

Gyakorlati példák a visszavonásra a fejlesztésben

Nézzünk három tipikus forgatókönyvet, ahol a fejlesztőnek vissza kell vonnia változtatásokat. Minden forgatókönyv saját megközelítést igényel — az egyszerű terminálparancstól a CI/CD részvételével történő többlépéses eljárásig.

Forgatókönyv 1: véletlen commit a mainbe

Véletlenül egy hibás commitot küldött a mainbe. A feladata a változtatások visszavonása a csapat történetének elvesztése nélkül. Használja a git revert-et a visszavonó commit létrehozásához, majd git push. A csapat összes tagja látni fogja a visszavonás tényét és folytathatja a munkát konfliktusok nélkül. Ez a legbiztonságosabb és legátláthatóbb módszer.

bash
git checkout main
git pull origin main
git revert HEAD
git push origin main

Forgatókönyv 2: sikertelen adatbázis migráció

Az adatbázis migrációja hibával zárult és az adatok egy része megsérült. Használjon tranzakciós rollbacket a migrációs szkriptben és biztonsági mentésből történő helyreállítást a már alkalmazott változtatásokhoz. Egy jól megtervezett rendszerben minden migráció tranzakcióba van csomagolva — hiba esetén az ADB automatikusan rollbacket hajt végre.

Forgatókönyv 3: telepítés kritikus hibával

Az új verzió telepítése után észlelte, hogy a hitelesítés nem működik. Ha blue-green-t használ, a visszavonás az útválasztó visszakapcsolását jelenti. Ha rolling update — a kubectl rollout undo parancs visszaállítja az előző verziót. Ideális esetben a visszavonási folyamatnak automatizáltnak kell lennie és nem tarthat tovább egy perc nél.

Gyakran Ismételt Kérdések

Mi a különbség a git revert és a git reset között?

Revert új commitot hoz létre, amely visszavonja a változtatásokat és megőrzi a történetet. Reset visszamozgatja az ág mutatóját és törölheti a commitokat. Közös ágakhoz csak revertet használjon.

Visszaállíthatók az adatok a git reset --hard után?

Ha a commitokat nem gyűjtötte be a Git szemetgyűjtője, akkor a git reflog segítségével visszaállíthatók. A tisztítás után azonban a visszaállítás lehetetlenné válik. A --hard csak helyi ágakban használja.

Hogyan működik a rollback egy SQL tranzakcióban?

Rollback visszavonja az aktuális tranzakcióban végzett összes változtatást az előreírási napló (WAL) segítségével. Az ADB visszaállítja az eredeti értékeket az összes módosított adatoldalhoz.

Mi az a savepoint és mire használják?

Savepoint — egy köztes mentési pont egy tranzakción belül. Lehetővé teszi a részleges visszatérést hozzá a teljes tranzakció visszavonása nélkül. Hasznos több lépésből álló hosszú műveleteknél.

Hogyan automatizálható a rollback CI/CD-ben?

Állítson be health checket és mérőszámok figyelését a telepítés után. A hibaküszéb túllépésekor indítsa el az automatikus visszavonást egy szkript vagy eszköz segítségével, mint például Spinnaker, ArgoCD vagy GitLab Auto Rollback.

Összefoglalás

  • Visszavonás (rollback) — kód, adatok vagy alkalmazás visszaállítása az előző stabil verzióra
  • Git revert — biztonságos visszavonás csapatmunkához a történet megőrzésével
  • Git reset — destruktív visszavonás, csak helyi ágakhoz alkalmas
  • Rollback az adatbázisban a WAL naplón alapul és garantálja a tranzakciók atomosságát
  • Savepoint lehetővé teszi a hosszú tranzakció részleges visszavonását
  • Blue-green és canary — telepítési stratégiák azonnali visszavonással
  • Automatizálja a visszavonást mérőszámok alapján a helyreállítási idő minimalizálásához

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is