Labo 1 — Lokaal versiebeheer
In dit labo ga je zelfstandig werken met Git op je eigen computer. Je oefent de volledige lokale workflow: een repository aanmaken, bestanden bijhouden, de geschiedenis bekijken en werken met branches.
Raadpleeg deze secties als je iets wil nalezen:
Stap 0 — Git Quest
Voordat je op je eigen computer aan de slag gaat, oefen je de basiscommando's via Git Quest — een gamified omgeving die je stap voor stap door de Git-commando's leidt. Je krijgt directe feedback op fouten en er is begeleiding doorheen het volledige process.
Doorloop alle levels en kom terug zodra je klaar bent.
Oefening 1 — Configuratie controleren
Voordat je begint, verifieer je dat Git correct geconfigureerd is.
- Open een terminal (Git Bash op Windows, Terminal op macOS/Linux).
- Controleer welke versie van Git je hebt. Zie je een versienummer?
- Controleer of je naam en e-mailadres ingesteld zijn.
- Zijn ze niet correct? Stel ze dan nu in.
- Controleer dat je standaard branch
mainheet.
Oefening 2 — Je eerste repository
- Maak een nieuwe map aan genaamd
portfolioen navigeer ernaar. - Initialiseer een Git-repository.
- Controleer de status — wat zie je?
- Maak een bestand
index.htmlaan met deze inhoud:<!DOCTYPE html><html><head><title>My Portfolio</title></head><body><h1>Hi, I'm [jouw naam]</h1></body></html> - Controleer de status opnieuw. Wat is er veranderd?
- Voeg het bestand toe aan de staging area.
- Controleer de status nogmaals. Wat zie je nu?
- Maak een eerste commit.
- Bekijk de commit-geschiedenis.
Oefening 3 — Staging area en diff
Werk verder in de portfolio-map.
- Maak twee nieuwe bestanden aan:
style.cssenscript.js. - Voeg aan
style.cssde volgende inhoud toe:body {font-family: sans-serif;background-color: #f0f0f0;} - Voeg aan
script.jsde volgende inhoud toe:console.log("Portfolio loaded"); - Voeg alleen
style.csstoe aan de staging area — nog nietscript.js. - Voer
git diffengit diff --stageduit. Wat toont elk commando? - Commit
style.cssmet een duidelijk bericht in het Engels. - Voeg nu ook
script.jstoe en commit het als aparte commit. - Bekijk de commit-geschiedenis met de korte weergave. Zie je beide commits?
Oefening 4 — .gitignore
Werk verder in de portfolio-map.
- Maak een bestand
.envaan met de inhoudAPI_KEY=geheim123. - Controleer de status — Git ziet het bestand als untracked.
- Maak nu een
.gitignoreaan en voeg.envtoe zodat het genegeerd wordt. - Controleer de status opnieuw — verschijnt
.envnog? - Voeg ook de volgende patronen toe aan
.gitignore:node_modules/*.log
- Commit de
.gitignore. - Maak een bestand
debug.logaan en controleer de status — wordt het genegeerd?
Commit .env nooit! Als je het per ongeluk gestagd hebt, haal je het terug met git restore --staged .env.
Oefening 5 — Werken met branches
Werk verder in de portfolio-map.
- Bekijk welke branches er bestaan.
- Maak een nieuwe branch
feature/aboutaan en schakel er direct naartoe. - Maak een bestand
about.htmlaan met een korte beschrijving over jezelf. - Commit dit bestand op de
feature/aboutbranch. - Schakel terug naar
main.- Is
about.htmlzichtbaar in de map? Waarom (niet)?
- Is
- Merge de
feature/aboutbranch inmain. - Verwijder de branch na de merge.
- Bekijk de commit-geschiedenis — welke commits zie je?
Oefening 6 — Merge conflict oplossen
Werk verder in de portfolio-map.
- Maak een nieuwe branch
feature/taglineaan vanuitmainen schakel ernaar. - Verander in
index.htmlde<h1>naar:<h1>Hi, I'm [naam] — Frontend Developer</h1> - Commit deze wijziging op
feature/tagline. - Schakel terug naar
mainen verander inindex.htmldezelfde<h1>naar:<h1>Hi, I'm [naam] — Web Designer</h1> - Commit deze wijziging op
main. - Probeer
feature/taglinete mergen inmain. Er ontstaat een conflict. - Open het bestand in VS Code, bekijk de conflictmarkeringen en kies welke versie je behoudt (of combineer beide).
- Stage het opgeloste bestand en voltooi de merge.
Uitdaging — Volledig projectbeheer
Je beheert een mini-website volledig met Git. Geen stap-voor-stap instructies — gebruik wat je geleerd hebt.
Doel: maak een repository webshop met de volgende vereisten:
- Een
.gitignoredienode_modules/,.enven*.lognegeert - Een
index.htmlals basispagina — gecommit opmain - Een branch
feature/productsmet eenproducts.html— gemerged inmain - Een branch
feature/cartdie een conflict veroorzaakt metmainopindex.html— opgelost en gemerged
Beoordeel jezelf achteraf:
- Zijn je commit-berichten in het Engels en beschrijvend?
- Heb je branches na de merge verwijderd?
- Is de
.gitignoreaanwezig en bevat hij alle vereiste patronen? - Toont
git log --onelineeen logische, leesbare geschiedenis?