Slik bruker du Git stash for å rydde opp i halvferdig kode uten å miste arbeid

Mange jobber i korte økter med koding, hopper mellom oppgaver og må ofte skifte gren i Git på kort varsel. Da sitter man fort igjen med halvferdige endringer som verken bør committes eller kastes.
Git stash er bygget for nettopp dette: lagre endringer midlertidig, uten å forstyrre historikken. Brukt riktig gir det mindre stress, færre panikk-commits og en ryddigere arbeidsflyt.
Hva Git stash egentlig gjør (og ikke gjør)
Git stash tar endringene dine i det gjeldende arbeidsområdet og legger dem til side som en egen liten pakke. Katalogen din blir rullet tilbake til siste commit, så du kan bytte gren eller gjøre andre oppgaver i ren tilstand.
Det er viktig å vite at stash ikke er en sikkerhetskopi i klassisk forstand. Stash-elementer kan forsvinne hvis du rydder for hardt eller resetter hardt, så tenk på det som midlertidig lagring, ikke arkiv.
Den vanligste situasjonen: du må brått bytte gren
Anta at du sitter på en feature-gren og har halvveis gjort en refaktorering. Plutselig må du over på main for å fikse en feil. Du har endringer i flere filer som du ikke er klar til å commite.
En grei grunnoppskrift kan se slik ut:
- 1:Lagre endringer midlertidig:
git stash push -m "refaktorering pågående" - 2:Bytt til annen gren:
git checkout main - 3:Gjør det du skal, commit, push osv.
- 4:Gå tilbake til jobben din:
git checkout feature/refaktorering - 5:Hent ut endringene igjen:
git stash pop
Etter git stash pop ligger endringene igjen i arbeidsområdet, klare til å jobbes videre med. Samtidig fjernes det aktuelle stash-elementet fra listen.
Forskjellen på stash push, apply og pop
git stash pushlager et nytt stash-element og gjør arbeidskatalogen ren. Du kan legge til en forklaring med -m, som gjør det mye lettere å huske hva som er hva senere.
git stash applyhenter inn endringene fra et stash-element, men lar selve stash-posten ligge. Det er nyttig når du vil gjenbruke det samme settet med endringer flere steder, eller bare være ekstra forsiktig.
git stash poper i praksis apply pluss sletting. Den legger inn endringene og fjerner stash-elementet fra listen. Hvis du er usikker, start med apply, og slett manuelt senere.
Ryddig oversikt: se og navngi stash-elementer
Etter noen dager er det lett å glemme hva som egentlig ble stashet. Da er git stash list nyttig. Den viser en liste som typisk ser slik ut: stash@{0}: On feature/refaktorering: wip på validering.
For å gjøre det lesbart, er det lurt å gi meningsfulle meldinger når du stasher, for eksempel: git stash push -m "wip: ny validering for checkout". Det koster lite og gjør opprydding mye enklere.
Stash bare deler av arbeidet, ikke alt

Noen ganger vil du skjule én endring for å kunne commite en annen. Da trenger du ikke stash på hele katalogen. Du kan stash på bestemte filer eller kun staged endringer.
Et typisk mønster er:
- 1:Stage det du vil beholde nå:
git add filA.ts filB.ts - 2:Stash resten:
git stash push -k -m "pågående refaktorering" - 3:Commit det som var staged:
git commit -m "fikser bug i checkout" - 4:Hent tilbake stash:
git stash pop
Flagget -k (eller --keep-index) gjør at endringer som allerede er staged blir liggende, mens alt annet går i stash. Dette gir deg fin kontroll når flere oppgaver har blandet seg sammen.
Vanlige problemer og hvordan du løser dem
Et typisk problem oppstår når du prøver git stash pop etter at grenen har beveget seg langt videre. Da kan du få konflikter på samme måte som ved en vanlig merge eller rebase.
I slike tilfeller gjør du som ellers: se gjennom konfliktene i filene, velg riktig innhold, marker som løst med git add og eventuelt lag en commit når du er fornøyd. Konflikter er ikke et signal om at stash er ødelagt, bare at historikken har endret seg.
Når stash er en dårlig idé
Selv om stash er praktisk, er det noen situasjoner der du bør tenke deg om. Hvis endringene dine egentlig er meningsfulle og delbare, er det ofte bedre å lage en egen gren og commite med en tydelig melding.
Bruk heller ikke stash som langvarig lagringsplass for ting du er redd for å miste. Hvis noe er viktig, legg det i en egen branch og push til fjernrepo. Da har du bakoverkompatibel historikk og trygg lagring.
En enkel sjekkliste for smartere bruk av Git stash
For å unngå kaos kan det hjelpe å ha noen enkle tommelfingerregler hver gang du vurderer stash. Poenget er å gjøre det lett å finne tilbake til ting og ikke miste oversikt.
- Gi alltid stash en kort, beskrivende melding med
-m - Bruk
git stash listjevnlig og rydd i gamle elementer - Bruk
applyhvis du er usikker,popnår du er trygg - Stash kun deler av endringer med
--keep-indexeller filnavn ved behov - Lag heller en liten gren enn å la stash ligge i ukevis
Med disse grepene blir Git stash et nyttig, lite verktøy i verktøykassen din, ikke en mystisk skuff der halvferdig arbeid forsvinner.









0 kommentarer