Git videregående: Monorepo, Submodules og arbeidsflyter · leksjon

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.

Leksjon 2 av 411 trinn

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 clean

Se 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.js

Apply 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 --continue

Test: 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.

Gratis å komme i gang

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

  1. Interaktiv rebase og endring av commits
  2. Stashing og cherry-picking av endringer
  3. Reflog for gjenoppretting
  4. Bisect: finne problematiske commits
← Tilbake til Git videregående: Monorepo, Submodules og arbeidsflyter