Git Exercises
I skal arbejde parvis i disse øvelser.
- Én af jer opretter et nyt repository på GitHub
- Invitér den anden som collaborator
- Opret et nyt projekt i IntelliJ
- Tilføj projektet til det nye GitHub repository
- Commit og push ændringer til GitHub
- Den anden kloner projektet til sin computer
Gode arbejdsvaner:
git pullfør du starter på en ny opgave, hvor du skal ændre koden. Altid!- Undgå såvidt muligt at arbejde i de samme filer samtidig på hver sin computer.
commitofte for at minimere merge konflikter. Commit efter hver lille arbejdsopgave og push ændringer til GitHub.git statusfor at checke status på dit lokale repository før du committer ændringer. Du får vist ændrede filer, nye filer (inkl. dem som er “untracked”) og slettede filer.- Arbejd i branches for at holde jeres arbejde adskilt, så I kan arbejde parallelt. Men hold branches tidsmæssigt korte for at undgå merge konflikter.
Opret hver jeres branch med navnet: feature-<Your Name>
Derefter:
- Lav ændring i
Main-klassen - Commit og push jeres branches til GitHub
- Opret en Pull Request for jeres egen branch og merge den til
main - Løs eventuelle merge konflikter
- Pull ændringer fra GitHub til din computer
Vis commit-historikken:
git log --graph --all --decorate --oneline
Undersøg historikken:
- Identificér commit hashes, authors og commit messages
- Diskutér formålet med hver commit
Lav derefter flere commits:
- Lav flere ændringer i
Main-klassen - Lav flere commits med gode og beskrivende commit-beskeder
- Slet
Main-klassen og commit ændringen
Find nu en tidligere version:
- Brug
git logtil at finde den commit, der indeholder den bedste version afMain - Opret en ny branch fra denne commit kaldet
featureMainClass.
Hvis hash f.eks. er f42ac91, så skriv:
git branch featureMainClass f42ac91
- Checkout denne branch
- Lav ændringer i
Mainog commit dem - Cherry-pick commiten der slettede
Mainog læg den ovenpåfeatureMainClass:
git cherry-pick <hash>
Vis derefter en mere avanceret log:
git log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
Hvad er der sket med din Main?
- Læse historik til at forstå projektets udvikling
- Genbruge commits.
- Gå tilbage til tidligere version ved at oprette branch fra tidligere commit uden at ødelægge main branch.
- Tage en commit fra andet sted i historikken (cherry-pick) og anvende i din nuværende branch.
- At Git ikke altid kan afgøre merge-konflikter, men du selv skal tage stilling.
Pull de seneste ændringer fra GitHub
Lav derefter følgende:
Tilføj en ny metode i
Main:public static void printNumbers(int start, int end)Metoden skal udskrive tallene fra
starttilend.Brug
git stashtil at stash’e dine ændringerOpret og checkout en ny branch kaldet
featurePrintNumbersTilføj stash til denne branch
Commit ændringerne
Merge branchen ind i
main
Det er en red dig selv øvelse. En typisk situation indtil man får styr på at arbejde med branches: “Ups, jeg er på main – jeg burde være på en feature branch!”:
- Gem midlertidige ændringer uden commit
- Og dermed rydde workspace før branch-skift
Diskutér - stadig parvis - og forklar for hinanden, hvor branches og pull requests er en god idé.
Se evt lidt gode argumenter her