Learning
Git CLI

Hibák javítása Git-ben

commit amend, reset, revert, restore és reflog a hibák biztonságos kezeléséhez.

Hibák javítása (reset, revert, amend)

A hibák elkerülhetetlenek. A Git számos eszközt kínál a javításukra – a legfontosabb, hogy tudjuk, mikor melyiket kell használni.

git commit --amend – utolsó commit módosítása

Mit csinál: Módosítja az utolsó commitot (üzenet vagy tartalom módosítható).

Mikor használjuk: Közvetlenül az utolsó commit után, ha elírtuk az üzenetet vagy elfelejtettünk egy fájlt hozzáadni.

# Csak az üzenet módosítása
git commit --amend -m "fix: correct the error message wording"

# Fájl hozzáadása az utolsó commithoz
git add forgotten-file.ts
git commit --amend --no-edit  # az üzenet marad

# Üzenet szerkesztése editorban
git commit --amend

Figyelem: Az amend újraírja a commit hash-jét. Ha már pushölted a commitot, --force-with-lease-t kell használni. Csak saját feature branch-en alkalmazd!


git reset – commitok visszavonása

Mit csinál: Visszaállítja az aktuális branch-et egy korábbi állapotba. Háromféle módban működik.

Mikor használjuk: Amikor lokálisan szeretnénk visszavonni commitokat.

# --soft: a commitok visszavonódnak, de a változások stage-elve maradnak
git reset --soft HEAD~1

# --mixed (alapértelmezett): commitok visszavonódnak, változások nem stage-eltek
git reset HEAD~1
# vagy
git reset --mixed HEAD~1

# --hard: commitok ÉS változások is elvesznek (visszafordíthatatlan!)
git reset --hard HEAD~1

# Visszaugrás egy adott commitra
git reset --hard a3f2c1d

# Egy fájl unstage-elése (a változtatás megmarad a munkakönyvtárban)
git reset HEAD src/index.ts

A három mód összehasonlítása:

MódCommit historyStaging areaMunkakönyvtár
--softvisszavonmegőrzimegőrzi
--mixedvisszavontörlimegőrzi
--hardvisszavontörlitörli

Figyelem: A --hard reset nem visszafordítható könnyen. Légy óvatos, főleg ha már pusholtál.


git revert – commit visszafordítása (biztonságos)

Mit csinál: Létrehoz egy új commitot, amely visszafordítja a megadott commit változásait. A history megmarad.

Mikor használjuk: Ha már pusholt commitot kell visszavonni – ez a biztonságos módja, mert nem írja át a historyt.

# Az utolsó commit visszafordítása
git revert HEAD

# Egy adott commit visszafordítása
git revert a3f2c1d

# Több commit visszafordítása (commitok nélkül, majd egy commit)
git revert --no-commit HEAD~3..HEAD
git commit -m "revert: undo last 3 commits"

git restore – fájlok visszaállítása (modern)

Mit csinál: Visszaállítja a fájlokat a staging area vagy a repository állapotára.

# Munkakönyvtárbeli változás eldobása
git restore src/index.ts

# Unstage: a fájl eltávolítása a staging area-ból (változás megmarad)
git restore --staged src/index.ts

# Fájl visszaállítása egy adott commit állapotára
git restore --source=a3f2c1d src/index.ts

git reflog – elveszett commitok visszakeresése

Mit csinál: A HEAD és más referenciák minden mozgását naplózza. Segítségével visszakereshetők a "elveszett" commitok is.

# Reflog megtekintése
git reflog

# Visszatérés egy reflog bejegyzéshez
git reset --hard HEAD@{3}

Tipp: Ha véletlenül git reset --hard-dal töröltél commitokat, a git reflog segítségével visszahozhatod őket, amíg a Git garbage collection el nem távolítja őket.


Rövid összefoglaló

  • git commit --amend – az utolsó commit gyors javítása (csak lokális / nem pusholt commitoknál).
  • git reset --soft HEAD~1 – commit visszavonása, változások megtartásával.
  • git reset --hard – veszélyes; törli a változásokat is; reflog-gal visszakereshető.
  • git revert – biztonságos visszavonás megosztott branch-eken; új commitot hoz létre.
  • git reflog – az elveszett commitok mentőöve.

On this page