HTX Frederikshavn & Hjørring

Det har aldrig været sjovere at være nørd

Brugerværktøjer

Webstedsværktøjer


ddu:git:git_forloeb_fortryd

Jeg har lavet fejl og vil fordtryde en ændring

Læringsmål

Du skal kunne:

  • Forklare forskellen på git restore, git reset og git 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 restore betyder: “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:

  1. Opret en mappe og kør git init.
  2. Opret tekst.txt med indholdet:
    • Dette er version A
  3. Commit filen.
  4. Ændr filen til:
    • Dette er version B
  5. 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 –hard i delt repo?
  • Hvad er forskel på –soft, –mixed og –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

  1. Hvilken kommando ændrer ikke historikken?
  2. Hvilken kommando er sikker i samarbejde?
  3. Hvad gør git reset –hard ved dit working directory?
  4. Kan git restore gendanne en fil uden at ændre historikken?
  5. Hvad er forskellen på at fjerne en commit vs. at modvirke den?

Hint


Til oversigt

ddu/git/git_forloeb_fortryd.txt · Sidst ændret: af 127.0.0.1