Rebase gick fel
Rebase är kraftfullt. Det är också det kommando som flest personer stör till på ett sätt som känns oöverskådligt.
Det goda: det finns nästan alltid en väg tillbaka.
Avbryta en pågående rebase
Är du mitt i en rebase med konflikter och vill inte fortsätta?
git rebase --abortDu är tillbaka till exakt läget innan rebasen startade. Ingenting förändrat.
Rebasen gick igenom men resultatet är fel
Du körde git rebase main och det verkar ha gått igenom — men historiken ser konstig ut, eller koden är fel.
Git sparar positionen innan rebasen i ORIG_HEAD:
git reset --hard ORIG_HEADTillbaka till läget precis innan rebasen. ORIG_HEAD skrivs över av nästa destruktiva operation, så agera snabbt.
Rebasen pågår men du är vilsen i konflikter
Rebase spelar av commits en i taget och pausar vid varje konflikt. Om du inte vet var du är:
git statusinteractive rebase in progress; onto 9d2e1f0Last command done (2 commands done): pick a3f8c21 feat: rabattkod-input
You are currently rebasing branch 'feature/rabattkod' on '9d2e1f0'. (fix conflicts and then run "git rebase --continue")Git berättar precis var du är. Lös konflikten i den utpekade filen:
# redigera filengit add Kassan.csgit rebase --continueUpprepa tills rebasen är klar.
Rebasade en delad branch av misstag
Det värsta scenariot. Du körde git rebase på en branch som kollegor arbetar på — nu har alla divergerande historik.
Steg 1: Varsla teamet direkt. De behöver veta.
Steg 2: Återställ branchen till läget innan rebasen med reflog.
git reflog | head -20Hitta entry:n precis innan rebasen startade (letar efter rebase (start) eller senaste commit-hash på branchen):
a3f8c21 HEAD@{0}: rebase (finish): returning to refs/heads/feature/rabattkod...b5c2d1e HEAD@{4}: commit: feat: sista committen innan rebasengit reset --hard b5c2d1egit push --force-with-leaseSteg 3: Teammedlemmar som hämtat den gamla versionen behöver:
git fetchgit reset --hard origin/feature/rabattkodKom ihåg till nästa gång
Rebase är säkert på din egna lokala branch, innan du pushat eller delar den. Så fort en branch finns på remote och andra kan ha hämtat den — använd merge istället.