Sessie 11: Coach-notities

Doel van deze sessie

Aan het einde van deze sessie kan een ninja:

  • Uitleggen wat versiebeheer is en waarom je het gebruikt.
  • Git installeren op de eigen laptop en git config instellen.
  • Een repository aanmaken met git init.
  • Bestanden toevoegen met git add en committen met git commit -m.
  • git status, git diff, git log --oneline en git show gebruiken om wijzigingen te inspecteren.
  • Een .gitignore-bestand aanmaken en begrijpen waarom die bestaat.

Wat niet verwacht wordt: branches, GitHub, pull requests. Die komen in sessies 12 tot 15.


Voorbereiding (30 min vóór de sessie)

  • Git Bash op Windows-laptops controleren. Veel Windows-laptops hebben Git niet. Zorg dat de installers klaarstaan op USB, of deel de downloadlink (git-scm.com). Installatie duurt ~5 minuten.
  • Terminal-angst inschatten. Veel ninjas hebben nog nooit een terminal open gehad. De eerste 15 minuten gaan naar uitleg: wat is een terminal, hoe typ je commando’s, wat doet Enter.
  • Zelf de sessie doorlopen. Maak een repo, commit een paar bestanden, doe een git diff, een git log. Zorg dat jij foutloos door de stappen gaat zodat je ninjas kan helpen.
  • Projector klaar voor terminal-demo’s. Zet de terminal op een groot lettertype (Ctrl+Plus in de meeste terminals). Ninjas moeten commando’s kunnen lezen vanaf hun plek.

⚠️ Risico: terminal is nieuw voor velen

Voor veel ninjas (zeker 10 tot 12 jaar) is de terminal compleet nieuw. De command-line interface is niet visueel, en foutmeldingen zijn in het Engels.

Mitigaties:

  • Demo eerst alles op de projector. Typ elk commando en leg uit wat er gebeurt. Laat ze niet zelf beginnen voor je de eerste twee stappen hebt voorgedaan.
  • Cheatsheet uitprinten of op het bord schrijven. De meest gebruikte commando’s (git status, git add, git commit, git log) moeten zichtbaar blijven.
  • Typo’s zijn normaal. Leg uit dat de terminal extreem precies is: git Status (hoofdletter) werkt niet, git status (kleine letters) wel. Eén spatie te veel of te weinig kan een fout geven.
  • git commit zonder -m opent een editor. Als een ninja git commit typt zonder -m, opent Vim of Nano. Leer ze: Escape, dan :q! en Enter om te ontsnappen. Daarna opnieuw met -m.

Tijdsindeling (3 uur)

TijdActiviteit
0:00 tot 0:15Welkom, wat is Git? Analogie: save-knop maar dan met geschiedenis
0:15 tot 0:30Projector: Git installeren + git config
0:30 tot 1:15Zelfstandig: git init, eerste bestand, git add, git commit
1:15 tot 1:30Pauze
1:30 tot 2:00Projector: git diff, git log, git show. Demo: terug in de tijd
2:00 tot 2:30Zelfstandig: wijzigingen maken, diffs lezen, commits bouwen
2:30 tot 2:45.gitignore uitleggen en toepassen
2:45 tot 3:00Showcase, cliffhanger, take-home

Veelgestelde vragen

“Moet ik elk bestand apart git add doen?” Ja, in het begin wel. Later kun je git add . gebruiken om alle gewijzigde bestanden in één keer toe te voegen. Maar leer eerst de controle met losse bestanden, zo voorkom je dat je per ongeluk dingen commit die niet in Git horen.

“Wat als ik per ongeluk een wachtwoord commit?” Niet panikeren. Als het lokaal is (nog niet naar GitHub gestuurd), kun je het fixen. Als je het al naar GitHub hebt gepusht: verander het wachtwoord metéén. Een commit uit de GitHub-historie verwijderen is bijna onmogelijk. Dit is precies waarom we .gitignore gebruiken.

“Git zegt ‘fatal: not a git repository’” Je zit niet in de juiste map. Gebruik cd om naar je projectmap te gaan. Check met ls of je de .git-map ziet (die is verborgen, dus ls -a om hem te zien).

“Wat is het verschil tussen git add en git commit?” git add = “Ik wil deze wijzigingen bewaren.” git commit = “Bewaar ze nu, met dit label.” Je kunt meerdere keren git add doen en dan één git commit die alles samenpakt. De staging area is je boodschappenmandje: je stopt er dingen in met add, en aan de kassa (commit) betaal je alles in één keer.


Hints voor Stretch en Expert

Geef hints, geen volledige commando’s.

Stretch: meerdere bestanden tegelijk: Als je drie bestanden gewijzigd hebt, kun je ze stuk voor stuk git add-en, of in één keer met git add . (punt = huidige map + alles erin).

Expert: terug in de tijd met git checkout: git checkout <commit-hash> -- <bestandsnaam> herstelt één bestand naar hoe het was in die commit. De rest van je project blijft zoals het is. Handig als je één bestand verprutst hebt.


Cliffhanger-script

Lees dit voor aan de groep aan het einde van de sessie:

“Nu heb je één lijn van commits. Alles netjes achter elkaar. Maar wat als je een nieuw idee wil uitproberen, zonder je werkende code kapot te maken? Wat als twee mensen tegelijk aan hetzelfde project werken? Volgende keer splitsen we onze code in parallelle universums. Dat heet branches. Breng je laptop mee, we gaan tijdreizen.”


Waarom deze sessie nú?

Tot nu toe werkten ninjas aan projecten op één computer, met één versie. Als er iets kapot ging, was er geen weg terug (behalve “Ctrl+Z tot gisteren”).

Deze sessie introduceert de basisinfrastructuur die professionele developers dagelijks gebruiken. Het is géén Python-sessie, het is een gereedschapssessie. Het doel is niet dat ze Git perfect beheersen, maar dat ze:

  1. Begrijpen dát versiebeheer bestaat.
  2. De basisterminologie kennen (repo, commit, staging, log).
  3. Zelf een repo kunnen starten en commits kunnen maken.

Dat geeft ze een fundament voor sessies 12 tot 15, en voor élk programmeerwerk dat ze hierna doen.

Belangrijk: Forceer geen perfectie. Zolang een ninja git init, git add, git commit kan doen en git status begrijpt, is de sessie geslaagd.