Intensiv DevOps-uddannelse · Lektion

Rebasing kontra merging

Sammenlign rebasing og merging, og lær, hvornår De bør bruge hver metode for at opnå en ren og lineær historik.

Lektion 3 af 411 trin

Rebasing kontra merging er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Fletning eller rebase? Valget

Når du arbejder med Git, oplever du ofte, at din gren afviger fra en anden, f.eks. at din feature-gren afviger fra main.

Hvordan samler du ændringerne? Git tilbyder to primære strategier: fletning og rebase. Begge integrerer ændringer, men de gør det på grundlæggende forskellige måder, hvilket fører til forskellige projekthistorikker.

Fletning: Sammenføring af historikker

Fletning er Gits standardmåde at integrere ændringer på. Når du fletter én gren ind i en anden, tager Git indholdet fra kildegrenen og kombinerer det med målgrenen.

Det vigtigste kendetegn ved en fletning er, at den opretter en ny flette-commit. Denne commit har to forældrecommits og viser tydeligt, at to afvigende historikker blev samlet. Den bevarer begge grenes nøjagtige historik.

Udførelse af en Git-fletning

Lad os se på en simpel fletning. Vi opretter en feature-gren, tilføjer en commit og fletter den derefter tilbage ind i main.

git init my_merge_project
cd my_merge_project
echo "Initial content" > file.txt
git add .
git commit -m "Initial commit"

git branch feature
git checkout feature
echo "Feature A" >> feature.txt
git add .
git commit -m "Add feature A"

git checkout main
echo "Main update" >> main.txt
git add .
git commit -m "Update main"

git merge feature

git log --oneline --graph

Fletning: Fordele og ulemper

Fletning er ligetil og sikkert for delte grene, men kan føre til en 'rodet' historik.

  • Fordele:
  • Bevarer committenes nøjagtige historik.
  • Er ikke-destruktiv og omskriver ikke eksisterende commits.
  • Er enkel at bruge og forstå.
  • Ulemper:
  • Kan skabe en 'støjende' historik med mange flette-commits.
  • Grafen kan se kompleks ud, når mange grene flettes ind.

Rebase: Omskrivning af historikken

Rebase er et alternativ til fletning, som integrerer ændringer ved at flytte eller kombinere en række commits til en ny basecommit. I stedet for at oprette en flette-commit omskriver den projekthistorikken.

Grundlæggende 'afspilles' dine featuregrens commits oven på målgrens seneste commit, så det ser ud, som om du begyndte dit arbejde derfra. Det skaber en lineær historik uden ekstra flette-commits.

Udførelse af en Git-rebase

Lad os nu prøve det samme scenarie med rebase. Vi rebaser vores feature-gren oven på main.

Bemærk, hvordan feature-grenens commit anvendes igen oven på den seneste commit i main, hvorefter en fast-forward-fletning får main til at pege på den.

git init my_rebase_project
cd my_rebase_project
echo "Initial content" > file.txt
git add .
git commit -m "Initial commit"

git branch feature
git checkout feature
echo "Feature B" >> feature.txt
git add .
git commit -m "Add feature B"

git checkout main
echo "Main update 2" >> main.txt
git add .
git commit -m "Update main 2"

git checkout feature
git rebase main

git checkout main
git merge feature

git log --oneline --graph

Rebase: Fordele og ulemper

Rebase skaber en ren historik, men medfører en vigtig advarsel om delte grene.

  • Fordele:
  • Skaber en ren, lineær projekthistorik.
  • Gør commit-historikken lettere at navigere i og forstå.
  • Giver mulighed for at rydde op i commits (samle eller omarrangere dem) før integration.
  • Ulemper:
  • Omskriver commit-historikken.
  • Kan være risikabelt, hvis det bruges på commits, der allerede er sendt til et delt (offentligt) fjernlager.

Fletning kontra rebase: Sammenligningen

Her er en hurtig opsummering af de vigtigste forskelle:

  • Fletning:
  • Opretter en ny flette-commit.
  • Bevarer hele den nøjagtige historik.
  • Er ikke-destruktiv.
  • Grafen kan være kompleks.
  • Rebase:
  • Omskriver historikken uden en flette-commit.
  • Resulterer i en lineær historik.
  • Er destruktiv (ændrer commit-id'er).
  • Grafen er meget ren.

Valg af strategi

Så hvornår skal du bruge hvad?

  • Brug fletning, når:
  • Du arbejder på offentlige eller delte grene, f.eks. main og develop.
  • Du har brug for at bevare den nøjagtige historik for dit projekt.
  • Du vil vise tydeligt, hvornår afvigende historikker blev samlet.
  • Brug rebase, når:
  • Du arbejder på din private featuregren, før du sender den.
  • Du ønsker en ren, lineær historik.
  • Du vil rydde op i dine featuregren-commits, f.eks. samle eller omarrangere dem, før integration.

Den gyldne regel: Rebas aldrig commits, der allerede er sendt til et delt fjernlager! Rebase af en delt historik kan give dine samarbejdspartnere store problemer.

Hurtigt tjek: Fletning eller rebase?

Overvej egenskaberne ved Gits to primære integrationsstrategier.

Opsummering: Fletning kontra rebase

I denne lektion undersøgte vi Gits to grundlæggende måder at integrere ændringer på: fletning og rebase.

  • Fletning kombinerer historikker med en ny flette-commit og bevarer alle oprindelige commits.
  • Rebase omskriver historikken og skaber et lineært forløb ved at flytte commits.

Vælg med omhu ud fra dit teams arbejdsgang, og husk den gyldne regel: Rebas aldrig en offentlig historik! Denne forståelse er afgørende for at vedligeholde en ren og samarbejdsvenlig Git-arbejdsgang.

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Rebasing kontra merging” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Rebasing kontra merging”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Rebasing kontra merging”?

Sammenlign rebasing og merging, og lær, hvornår De bør bruge hver metode for at opnå en ren og lineær historik. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Rebasing kontra merging”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Workflow med feature-branches
  2. Introduktion til Gitflow-workflow
  3. Rebasing kontra merging
  4. Trunk-baseret udvikling
← Tilbage til Intensiv DevOps-uddannelse