Återställa förlorad kod
Du körde git reset --hard. Eller rebaser gick fel. Eller du tappade en branch. Koden verkar borta.
Den är troligtvis inte det.
git reflog — Git minns allt
git reflog visar varje gång HEAD rört sig — commits, resets, checkouts, rebaser. Allt:
git refloga3f8c21 HEAD@{0}: reset: moving to HEAD~39d2e1f0 HEAD@{1}: commit: feat: lägg till rabattkod-validering7b4a3c8 HEAD@{2}: commit: fix: typo i felmeddelandeb5c2d1e HEAD@{3}: commit: feat: rabattkod-input i kassanHEAD@{1}, HEAD@{2}, HEAD@{3} — de commits som försvann när du körde reset --hard HEAD~3.
Återställ till ett tidigare läge
git reset --hard HEAD@{3}Du är tillbaka. Alla tre commits finns igen.
Eller, om du vill säkra koden på en ny branch utan att röra det du är på:
git checkout -b räddad-branch HEAD@{3}Tappade en branch
Tappade du en hel branch som inte var mergad?
git reflog | grep "checkout: moving from"b5c2d1e HEAD@{5}: checkout: moving from feature/rabattkod to mainSista committen på branchen innan du bytte: b5c2d1e.
git checkout -b feature/rabattkod b5c2d1eBranchen är tillbaka.
Reflog har en tidsgräns
Git sparar reflog i 90 dagar som standard. Efter det är posten borta — och då är koden faktiskt borta.
90 dagar är lång tid. De flesta “jag tappade koden”-situationer händer för minuter eller timmar sedan, inte månader.
Om reflog inte räcker
En sista utväg: git fsck.
git fsck --lost-foundDet söker igenom Git-objektdatabasen efter “dangling commits” — commits som inte längre refereras av någon branch eller tag men fortfarande finns i .git/objects/.
dangling commit a3f8c21d4e9b7f2a1c0d5e8f3b6a9c2d4e7f1b0agit show a3f8c21d # kolla om det är rättgit checkout -b återhämtad a3f8c21dDet är den verkliga sista plankan. Men den fungerar.