Git-trackLes 3 van 7

🐙 Geschiedenis & terugdraaien

git log, git diff, git restore — fouten ongedaan maken en door de tijd reizen.

⏱ 25 min6 stappen
Stap 1 / 6

git log — de tijdlijn

Je repository is een tijdlijn van commits. git log laat je die tijdlijn zien — en elke commit heeft een unieke hash waarmee je er later naartoe kunt gaan.

git log --oneline --graph
* f3a1b2c (HEAD -> main) Voeg contactformulier toe
* a9d4e5f Fix navigatie op mobiel
* 7c8b0d1 Voeg CSS styling toe
* 2e3f4a5 Eerste commit
HEAD

HEAD is een pointer naar de commit waar je nu bent — meestal de laatste commit op je huidige branch.

Commit hash

Elke commit heeft een unieke SHA-1 hash (40 tekens). Je hoeft alleen de eerste 7 te typen — Git begrijpt het.

Handige log opties
--oneline compact
--graph branches
-p met wijzigingen
--since="1 week"
Stap 2 / 6

git diff — wat is er veranderd?

git diff toont exact welke regels zijn toegevoegd (groen) of verwijderd (rood) ten opzichte van de laatste commit.

Typische git diff output
diff --git a/index.html b/index.html
--- a/index.html
+++ b/index.html
@@ -5,7 +5,8 @@
   <h1>Welkom</h1>
-  <p>Oude tekst hier</p>
+  <p>Nieuwe, verbeterde tekst</p>
+  <p>Extra alinea toegevoegd</p>
   </div>
Wanneer git diff gebruiken
git diff — werkmap vs laatste commit
git diff --staged — staging vs laatste commit
git diff HEAD~1 — t.o.v. vorige commit
git diff a3f9b21 — t.o.v. specifieke commit
💡 Altijd diff checken vóór commit

Gewoonte: git diffgit addgit diff --stagedgit commit. Zo weet je altijd precies wat je opslaat.

Stap 3 / 6

git restore — wijzigingen ongedaan maken

git restore (nieuw in Git 2.23) maakt wijzigingen ongedaan — ofwel in de werkmap, ofwel in de Staging Area.

1. Gewijzigd bestand herstellen (nog niet ge-staged)
git restore index.html

Gooit alle niet-ge-stagede wijzigingen in index.html weg. Onomkeerbaar!

2. Bestand uit de Staging Area halen (unstagen)
git restore --staged index.html

Haalt het bestand uit staging — de wijzigingen blijven in je werkmap staan.

3. Alles herstellen
git restore .            # gooit alle werkmap-wijzigingen weg
git restore --staged .   # haalt alles uit staging
⚠️ Let op: onomkeerbaar!

git restore op werkmap-bestanden gooit niet-gecommitte wijzigingen definitief weg. Altijd eerst git status checken.

Stap 4 / 6

Terug in de tijd

Met Git kun je de staat van een eerdere commit bekijken, bestanden terugzetten, of een hele commit terugdraaien.

Bestanden van vroeger bekijken
git show a3f9b21:index.html    # inhoud bekijken
git restore --source=a3f9b21 index.html  # bestand herstellen

Handig als je één bestand wilt terugzetten naar een eerdere versie.

git revert — commit terugdraaien (veilig)
git revert a3f9b21

Maakt een nieuwe commit die de wijzigingen van a3f9b21 ongedaan maakt. De geschiedenis blijft intact — dit is de veilige methode voor gedeelde repositories.

git reset — voorzichtig
git reset --soft HEAD~1   # verwijder commit, wijzigingen blijven staged
git reset --mixed HEAD~1  # verwijder commit, wijzigingen in werkmap
git reset --hard HEAD~1   # verwijder commit én wijzigingen (onomkeerbaar!)

HEAD~1 = één commit terug. Gebruik --hard nooit op gedeelde branches.

📌 Aanbeveling

Gebruik git revert wanneer je samenwerkt — het is altijd veilig. Gebruik git reset alleen op commits die je nog niet gepusht hebt.

Stap 5 / 6

Oefening — alles samen

🎯 Doel

Oefen de volledige cyclus: commits bekijken, wijzigingen vergelijken en terugdraaien. Probeer in de terminal:

  1. git log --oneline — zie de commitgeschiedenis
  2. git diff HEAD~1 — vergelijk met vorige commit
  3. git show a3f9b21 — details van een commit
  4. git restore --staged style.css — unstage een bestand
  5. git revert HEAD — draai laatste commit terug
🖥️ Interactieve terminal
Terminal
Probeer: git log --oneline, git diff HEAD~1, git show a3f9b21
student@pc:~/mijnproject$

🧠 Kennischeck

🐙

Les 3 afgerond!

Je kunt nu de geschiedenis bekijken, wijzigingen vergelijken en fouten ongedaan maken.

Les 4: GitHub →