Stashing og cherry-picking av endringer
Behersk `git stash` for å lagre endringer midlertidig, og `git cherry-pick` for å bruke bestemte commits på tvers av grener.
Stashing og cherry-picking av endringer er en gratis leksjon i Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Git videregående: Monorepo, Submodules og arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.
Hvorfor bruke Git Stash?
Er De midt i en funksjon når en hastesak plutselig dukker opp? git stash legger de ucommittede endringene midlertidig til side, slik at De kan bytte gren uten å committe halvferdig arbeid.
Lagre endringene midlertidig
Kjør git stash for å lagre endringer som er gjort eller stagget. Deretter tilbakestiller Git arbeidsmappen til en ren HEAD. Arbeidet Deres er trygt lagt til side.
git status
# On branch feature-x
# Changes to be committed:
# new file: new_feature.txt
# Changes not staged for commit:
# modified: index.html
git stash
# Saved working directory and index state WIP on feature-x: ...
# HEAD is now at ...
git status
# On branch feature-x
# nothing to commit, working tree cleanSe stash-stakken
De kan ha flere stash-poster. git stash list viser alle, hver med en indeks – stash@{0} er den nyeste.
git stash list
# stash@{0}: WIP on feature-x: ...
# stash@{1}: WIP on bugfix-branch: ...Hent stash tilbake: Apply
git stash apply gjenoppretter den nyeste stash-posten i arbeidsmappen. Vil De hente en eldre post? Angi den, for eksempel med git stash apply stash@{1}.
git checkout bugfix-branch
git stash apply stash@{1}
# On branch bugfix-branch
# Changes not staged for commit:
# modified: bug.jsApply kontra pop: Hva er forskjellen?
apply kontra pop: apply gjenoppretter endringene, men beholder stash-posten i listen; pop gjenoppretter dem og fjerner stash-posten. Bruk pop når De er ferdig med den.
git stash list
# stash@{0}: WIP on feature-x: ...
git stash pop
# On branch feature-x
# Changes not staged for commit:
# modified: index.html
# Dropped stash stash@{0} (...
git stash list
# (empty output, stash is gone)Rydde opp i stash-poster
Rydd bort stash-poster De ikke lenger trenger: git stash drop <id> fjerner én, mens git stash clear fjerner alle. Clear kan ikke angres, så vær forsiktig.
git stash list
# stash@{0}: WIP on feature-x: ...
# stash@{1}: WIP on old-bug: ...
git stash drop stash@{1}
# Dropped stash stash@{1} (...
git stash list
# stash@{0}: WIP on feature-x: ...Introduksjon til Git Cherry-Pick
Trenger De bare én commit fra en annen gren, og ikke hele historikken? git cherry-pick bruker endringene fra én commit på den gjeldende grenen.
Bruke én enkelt commit
Finn commit-hashen med git log --oneline, bytt til målgrenen, og kjør deretter git cherry-pick <hash> for å hente over bare denne endringen.
git log --oneline
# a1b2c3d Fix: Critical typo in header
# e4f5g6h Feat: Add user profiles
git checkout main
# Switched to branch 'main'
git cherry-pick a1b2c3d
# [main] Fix: Critical typo in header
# 1 file changed, 1 insertion(+), 1 deletion(-)Løse konflikter ved cherry-pick
Cherry-pick kan gi konflikter, på samme måte som en merge. Løs dem manuelt, kjør git add på filene, og kjør deretter git cherry-pick --continue – eller --abort for å avbryte.
git cherry-pick a1b2c3d
# Auto-merging header.js
# CONFLICT (content): Merge conflict in header.js
# error: could not apply a1b2c3d...
# (Resolve conflicts, then:)
git add header.js
git cherry-pick --continueTest: Stash og Cherry-Pick
De står på grenen feature-A med ucommittede endringer. En hastesak må inn i main. De legger endringene i stash, bytter til main og retter feilen med en commit (hash: 789abc). Nå vil De bruke denne rettelsen på feature-A og gå tilbake til arbeidet Deres.
Leksjonsoppsummering
Oppsummering: git stash legger ucommittet arbeid til side, slik at De kan bytte gren på en ryddig måte, mens git cherry-pick henter én enkelt commit fra én gren til en annen.
Lær deg Git videregående: Monorepo, Submodules og arbeidsflyter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Stashing og cherry-picking av endringer» gratis?
Ja – hele teksten i «Stashing og cherry-picking av endringer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Git videregående: Monorepo, Submodules og arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Stashing og cherry-picking av endringer»?
Behersk `git stash` for å lagre endringer midlertidig, og `git cherry-pick` for å bruke bestemte commits på tvers av grener. Du øver på Git videregående: Monorepo, Submodules og arbeidsflyter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Git videregående: Monorepo, Submodules og arbeidsflyter?
Ingen tidligere erfaring er nødvendig. Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Stashing og cherry-picking av endringer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Git videregående: Monorepo, Submodules og arbeidsflyter-leksjonen?
Ja. Alle Git videregående: Monorepo, Submodules og arbeidsflyter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Interaktiv rebase og endring av commits
- Stashing og cherry-picking av endringer
- Reflog for gjenoppretting
- Bisect: finne problematiske commits