Oefening
Online simulatie
Op https://learngitbranching.js.org/ kan je git commando's in een sandbox uitvoeren. Voer de eerste vier oefeningen uit die je vindt bij de 'introduction sequence'
Sandbox
Bouw op de sandbox https://git-school.github.io/visualizing-git/ volgende setup na aan de hand van onderstaande instructies. Probeer te begrijpen waar de HEAD telkens naar wijst.
- doe een eerste commit (first commit) op de master branch
- doe een tweede commit (feat1) op de master branch
- maak een nieuwe branch test, bedoeld om een experimentele feature te bouwen
- checkout de nieuwe test-branch, en doe er twee commits in
- ga terug naar de master branch
- merge de test branch met de master branch. (vanop de master branch voer je het commando
git merge test
uit) Verdere details over hoe zo'n merge (=samenvoegen) werkt zien we in een volgende pagina.
Als alles goed liep, zou je bovenstaand schema moeten zien als resultaat.
Gitlab 👈
Maak een nieuwe repo lab-branching aan in Gitlab.
- Kloon deze repository lokaal.
- Maak in de repo een bestand aan met de naam "production.txt".
- voeg het bestand toe aan GIT (git add)
- commit je wijzigingen.
Een vraagje tussendoor: is er intussen al iets gewijzigd aan je repo in Gitlab? Wat moet gebeuren om daar ook de wijzigingen te zien?
<antwoord>
Voer uiteraard ook deze laatste stap uit.
Branching en fast-forward merging 👈
- Ga in de git bash terug naar de map die we in een eerdere oefening maakten.
- Maak een nieuwe branch "joke3" aan met het
git branch
commando. - Kijk nog even na op welke branch je momenteel zit met
git branch
- Wissel naar de nieuwe branch met
git checkout joke3
- Kijk na als dat gelukt is met
git branch
- Voeg een nieuwe mop toe aan het bestand jokes.adoc
* Knock knock. Who's there? Git.
Git-who?
Sorry, 'who' is not a git command - did you mean 'show'?
- Stage en commit deze wijziging in de huidige actieve branch
- Ga met
git log
kijken naar de commit history - Ga terug naar de master branch
- Merge de wijzigingen die we maakten in de feature branch met
git merge joke3
- Als de merge een succes is, kan je de feature branch verwijderen met
git branch -d joke3
- Met
git branch
kan je vaststellen dat de joke3 branch effectief ook weg is.
Omgaan met merge conflicts 👈
- Maak een nieuwe branch 'fixjoke' aan.
- Pas daar de tweede mop aan in het bestand joke.adoc: verander het jaartal naar 2005 (het jaar dat Git ontworpen werd)
- Stage en commit deze wijziging (net zoals je eerder al deed met de joke3 branch)
- Ga naar je master branch en pas daar het jaartal aan naar 2007.
- Ook hier stage en commit je deze wijziging
- Voer vanuit de master branch een merge uit:
git merge fixjoke
Het resultaat is uiteraard dat er een merge conflict is. Git kan niet weten als de wijziging van het jaartal moet resulteren in 2005 of 2007.
- Editeer het bestand joke.adoc. Corrigeer daar het merge conflict manueel, verwijder dus ook alle andere lijnen die na het mergen overbodig zijn. (ook de regels met
<<<<<<
,=====
en `>>>>>) - Als je tevreden bent over het eindresultaat, kan je terug committen.