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 labiac-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.