Indholdsfortegnelse
Jeg har lavet fejl og vil fordtryde en ændring
Læringsmål
Du skal kunne:
- Forklare forskellen på
git restore,git resetoggit revert. - Anvende hver kommando i praksis i et lille Git-projekt.
- Vælge den rigtige kommando i den rigtige situation.
- Forstå hvilke kommandoer der er sikre i et delt repository.
Teori
git restore
- Fortryder ændringer i arbejdsfiler før commit.
- Historikken ændres ikke.
- Bruges til at gendanne sidst gemte version.
git reset
- Flytter projektets lokale historik til en tidligere commit.
- Kan slette commits lokalt.
- Ikke sikkert ved samarbejde.
git revert
- Laver en ny commit, der fortryder en tidligere commit.
- Ændrer ikke historikken.
- Den anbefalede metode i samarbejdsprojekter.
Git: restore, reset og revert — Forklaring + Øvelser
Forestil dig, at Git er et skrivebord, hvor du arbejder på filer.
Noget er kladde (working directory), noget er klar til commit (staging), og noget er gemt i historikken (commits).
Nogle handlinger er lokale og ufarlige, andre kan være problematiske i samarbejde.
git restore
„Fortryd kladde“
Bruges til at fortryde ændringer i arbejdsfiler, før du har lavet commit.
- Du har ændret filer, men ikke committet dem.
git restorebetyder: “Gå tilbage til sidste gemte version.”- Historikken ændres ikke.
Billede i hovedet: Du har tegnet på et papir, men fortryder tegningen → du smider papiret ud og tager en ny kopi fra skuffen.
git reset
„Ryd skrivebordet (lokalt)„
Bruges til at spole projektet tilbage i historikken – men kun lokalt. Derfor *ikke sikkert* ved samarbejde.
- Du går tilbage til en tidligere commit.
- Commits efter denne fjernes fra din lokale historik.
- Kan også fjerne filer fra staging.
Billede i hovedet: Du har lavet tre tegninger (commits). Du vil slette de to sidste → du river dem ud af din egen mappe. Andres mapper ændres ikke.
git revert
„Annullér i historikken (sikkert ved samarbejde)„
Bruges til at lave en ny commit, der fortryder en tidligere commit – uden at ændre historikken.
- Den laver en slags „mod-commit“.
- Den sikre måde at fortryde på i et delt repository.
Billede i hovedet: Du har tegnet en streg i mappen. I stedet for at rive siden ud, laver du en ny tegning, hvor du visker stregen ud. Alle kan se, hvad der er sket.
Kort opsummering
| Kommando | Betydning | Hvornår bruges det? | Sikkert i samarbejde? |
|---|---|---|---|
| git restore | Fortryd kladde | Når du vil tilbage til sidste gemte version | Ja |
| git reset | Ryd skrivebord (lokalt) | Når du vil spole din lokale historik tilbage | Nej |
| git revert | Annullér i historikken | Når du vil fortryde en delt commit | Ja |
Checkpoints
Du skal kunne:
- Forklare forskellen på restore/reset/revert.
- Vide hvornår man ikke må bruge
reset. - Gendanne en fil der er ændret men ikke committet.
- Lave et mod-commit der fortryder en fejl.
- Vide hvordan man arbejder sikkert med delt historik.
Øvelse 1 – "Fortryd kladde" med git restore (nem)
Formål: Lære at gendanne ændrede filer før commit.
Trin:
- Opret en mappe og kør
git init. - Opret
tekst.txtmed indholdet:Dette er version A
- Commit filen.
- Ændr filen til:
Dette er version B
- Kør:
git restore tekst.txt
Forventet resultat: Filen viser igen „Dette er version A“.
Checkpoints:
- Hvad sker der hvis „version A“ ikke var committet?
- Ændrer restore historikken?
Øvelse 2 – "Ryd skrivebordet" med git reset (mellem)
Formål: Forstå soft/mixed/hard reset uden at ødelægge remote.
Trin:
1. Opret et repo uden remote. 2. Lav tre commits: "A", "B", "C". 3. Kør ''git log --oneline'' og noter id for "B". 4. Kør: ''git reset --hard <id-for-B>''
Forventet resultat:
- Commit „C“ forsvinder lokalt.
- Projektet matcher commit „B“.
Checkpoints:
- Hvorfor må man ikke køre
reset –hardi delt repo? - Hvad er forskel på
–soft,–mixedog–hard?
Øvelse 3 – "Fortryd i historikken" med git revert (svær)
Formål: Forstå hvordan man fortryder en commit uden at ændre historikken.
Trin:
1. Lav commit 1: opret ''tal.txt'' med tallet ''1''. 2. Lav commit 2: skift tallet til ''2''. 3. Se loggen: ''git log --oneline'' 4. Revert commit 2: ''git revert <id-for-commit-2>''
Forventet resultat:
- Ny commit: *“Revert <id>„*
- Filen viser igen 1
Checkpoints:
- Hvorfor er revert sikker i samarbejde?
- Hvad ville der ske hvis man brugte reset i stedet?
Øvelse 4 – Case: "Git-katastrofen" (team-øvelse)
Scenarier (vælg 1):
- En elev har ændringer der skal fortrydes → brug
restore. - En elev har lavet commits lokalt → brug
reset(uden push). - En elev har pushed en fejl → brug
revert.
Succeskrav:
- Repo ender i korrekt tilstand.
- Remote-historik er bevaret.
- Gruppen forklarer deres valg korrekt.
Mini‑quiz
- Hvilken kommando ændrer ikke historikken?
- Hvilken kommando er sikker i samarbejde?
- Hvad gør
git reset –hardved dit working directory? - Kan
git restoregendanne en fil uden at ændre historikken? - Hvad er forskellen på at fjerne en commit vs. at modvirke den?
