Hjem » Siste artikler » Git stash i praksis: slik parkerer halvferdig arbeid uten å miste det

Git stash i praksis: slik parkerer halvferdig arbeid uten å miste det

Hovedillustrasjon
Hovedillustrasjon. Foto: James Harrison / Unsplash.

Nesten alle som jobber med Git har opplevd det: du er midt i en endring, så dukker det opp noe viktig som må fikses på en annen gren. Du vil ikke commite halvferdig arbeid, men du vil heller ikke miste det.

Det er hergit stashkommer inn. I denne artikkelen ser vi på hvordan du kan bruke stash trygt og praktisk, med konkrete eksempler og vanlige feller å unngå.

Hva git stash faktisk gjør

Git stash lagrer endringene dine midlertidig, slik at arbeidskatalogen kan gå tilbake til en ren tilstand. Du kan så bytte gren, gjøre andre ting, og senere hente frem endringene igjen.

Det som stashes er som regel:

  • Endrede sporede filer (filer som allerede er versjonskontrollert)
  • Nye filer du har lagt til i staging medgit add(med noen variasjoner, se under)

Grunnkommandoene du bør kunne

La oss si at du har endret noen filer, men er ikke klar til å commite. Da er standardløypen slik:

  • git stash: lagrer endringer og nullstiller arbeidskatalogen
  • git stash list: viser alle lagrede stash-pakker
  • git stash apply: legger en stash tilbake, men lar den være i listen
  • git stash pop: legger en stash tilbake og fjerner den fra listen

I mange tilfeller ergit stashog derettergit stash popnok til daglig bruk.

Et konkret scenario steg for steg

Se for deg at du jobber på grenenfeature/loginog har endringer i to filer, uten å ha committed:

  1. Lag en stash:
    git status git stash Dette rydder arbeidskatalogen, som om du aldri gjorde endringene.Bytt gren og fiks noe: git checkout main # gjør en rask fix git commit -am "Rask fix"Tilbake til funksjonsgrenen: git checkout feature/login git stash pop Nå er endringene dine tilbake, klare til å jobbes videre med.Forskjellen på apply og popgit stash applylegger innholdet av en stash på toppen av nåværende arbeidskatalog, men lar stashen ligge igjen i listen.

    Dette er nyttig hvis du vil gjenbruke samme stash på flere grener, eller som sikkerhet hvis noe går galt ved påføringen.

    git stash popgjør det samme, men fjerner stashen hvis påføringen var vellykket. Hvis det oppstår konflikter, slettes stashen likevel vanligvis ikke før konflikten er løst, men det er lurt å dobbeltsjekke medgit stash listfør du stoler helt på det.

    Hva med nye filer og ignorert innhold?

    Standardgit stashtar ikke alltid med helt nye filer som ikke er lagt til medgit add. Da kan du få en overraskelse når du henter frem stashen og mangler filer du trodde var lagret.

    For å være tydelig kan du bruke:

    • git stash -uellergit stash --include-untrackedfor å ta med nye filer som ikke er ignorert
    • git stash -aellergit stash --allfor å ta med alt, også filer som er oppført i.gitignore

    Gi stashen et navn du faktisk husker

    Tematisk illustrasjon
    Tematisk illustrasjon. Foto: Brett Sayles / Pexels.

    Når du har mer enn én stash blir det fort uoversiktlig å bare ha navn somstash@{0},stash@{1}og så videre. Det er derfor lurt å gi en kort og beskrivende melding:

    git stash push -m "Refaktorering av loginvalidering"

    Du vil da se denne beskrivelsen igit stash list, noe som gjør det mye enklere å finne riktig stash hvis du har flere liggende samtidig.

    Hente en eldre stash og jobbe videre

    Hvis du har mange stashes, kan du spesifisere hvilken du vil hente:

    git stash list
    git stash apply stash@{2}

    Du kan også lage en ny gren direkte fra en stash, noe som er praktisk hvis du innser at det halvferdige arbeidet egentlig burde vært på en separat gren:

    git stash branch ny-feature-gren stash@{2}

    Dette oppretter en ny gren fra der stashen opprinnelig ble laget, legger på endringene, og prøver å fjerne stashen hvis alt lykkes.

    Vanlige feller og hvordan du unngår dem

    Det mest krevende med git stash er at det er lett å glemme hva som faktisk ligger der, eller å miste oversikten når det blir mange poster. Her er noen vanlige feller:

    • Aldri stole blindt på at ting er trygt lagret: brukgit stash listog eventueltgit showfor å se innholdet før du sletter noe.
    • Unngå å stash’e i stedet for å commite: stash er midlertidig, commit er historikk. Hvis arbeidet er meningsfullt, lag en egen gren og en tydelig commit.
    • Rydd opp jevnlig: kjørgit stash drop stash@{n}for å slette enkeltposter du ikke trenger, ellergit stash clearnår du er sikker på at alle kan bort.

    Når stash er nyttig, og når det er et dårlig tegn

    Stash skinner når du må bytte kontekst fort, for eksempel for å håndtere en feil i produksjon eller teste en annen gren uten å miste pågående arbeid. Det gjør kontekstbytte mye mindre stressende.

    Hvis du derimot merker at du stash’er alt mulig hele tiden, kan det være et symptom på at arbeidsflyten din kunne vært bedre. Da er det ofte bedre å:

    • Lage flere, mindre grener for avgrensede oppgaver
    • Committ oftere i små, logiske steg
    • Bruke feature-flags eller midlertidige toggles i stedet for å gjemme bort arbeid

    Oppsummering: gjør stash til en trygg vane

    Git stash er et nyttig verktøy i verktøykassen når det brukes bevisst. Tenk på det som en midlertidig parkering, ikke et arkiv. Gi stashene navn, ta bevisste valg om nye filer, og rydd opp når du er ferdig.

    Kombinert med gode rutiner for grener og hyppige commits vil stash hjelpe deg å jobbe mer fleksibelt uten å risikere å miste viktig arbeid når hverdagen plutselig krever kontekstbytte.

0 kommentarer