🐙 Geschiedenis & terugdraaien
git log, git diff, git restore — fouten ongedaan maken en door de tijd reizen.
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.
* f3a1b2c (HEAD -> main) Voeg contactformulier toe
* a9d4e5f Fix navigatie op mobiel
* 7c8b0d1 Voeg CSS styling toe
* 2e3f4a5 Eerste commit
HEAD is een pointer naar de commit waar je nu bent — meestal de laatste commit op je huidige branch.
Elke commit heeft een unieke SHA-1 hash (40 tekens). Je hoeft alleen de eerste 7 te typen — Git begrijpt het.
--oneline compact--graph branches-p met wijzigingen--since="1 week"git diff — wat is er veranderd?
git diff toont exact welke regels zijn toegevoegd (groen) of verwijderd (rood) ten opzichte van de laatste commit.
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>
git diff — werkmap vs laatste commitgit diff --staged — staging vs laatste commitgit diff HEAD~1 — t.o.v. vorige commitgit diff a3f9b21 — t.o.v. specifieke commitGewoonte: git diff → git add → git diff --staged → git commit. Zo weet je altijd precies wat je opslaat.
git restore — wijzigingen ongedaan maken
git restore (nieuw in Git 2.23) maakt wijzigingen ongedaan — ofwel in de werkmap, ofwel in de Staging Area.
git restore index.html
Gooit alle niet-ge-stagede wijzigingen in index.html weg. Onomkeerbaar!
git restore --staged index.html
Haalt het bestand uit staging — de wijzigingen blijven in je werkmap staan.
git restore . # gooit alle werkmap-wijzigingen weg
git restore --staged . # haalt alles uit staging
git restore op werkmap-bestanden gooit niet-gecommitte wijzigingen definitief weg. Altijd eerst git status checken.
Terug in de tijd
Met Git kun je de staat van een eerdere commit bekijken, bestanden terugzetten, of een hele commit terugdraaien.
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 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 --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.
Gebruik git revert wanneer je samenwerkt — het is altijd veilig. Gebruik git reset alleen op commits die je nog niet gepusht hebt.
Oefening — alles samen
Oefen de volledige cyclus: commits bekijken, wijzigingen vergelijken en terugdraaien. Probeer in de terminal:
git log --oneline— zie de commitgeschiedenisgit diff HEAD~1— vergelijk met vorige commitgit show a3f9b21— details van een commitgit restore --staged style.css— unstage een bestandgit revert HEAD— draai laatste commit terug
🧠 Kennischeck
Les 3 afgerond!
Je kunt nu de geschiedenis bekijken, wijzigingen vergelijken en fouten ongedaan maken.