===== Git Forløb: Branches ===== Dette forløb introducerer arbejdet med branches i Git. Eleverne skal lære at oprette, skifte mellem, merge og pushe branches, samt forstå workflowet i et versionsstyringssystem. === Læringsmål === * Eleven kan oprette, liste og navigere mellem branches. * Eleven kan merge en feature-branch tilbage til main uden konflikter. * Eleven kan forklare, hvorfor man bruger branches i versionsstyring. * Eleven kan visualisere commit-historik og branch-struktur. Teori * `git branch ` – opretter en ny branch. * `git switch ` – skifter til branch. * ''git switch -c '' - opretter ny branch, og skrifter til den. * `git merge * ` – fletter branch tilbage til hovedbranch. * Branches giver mulighed for at arbejde på features eller eksperimenter uden risiko for main. ---- main branch er den "hellige gral" som vi, til enhver tid, ønsker at være 100% funktionel. Derfor anvender vi branches til at udvikle nye features eller til at eksperimentere. Er vores feature fri for fejl, kan den merges ind i main branch. {{ :images:git_branch.png |}} == Øvelsesvejledning == === 1. Opret et repository og initier Git === git init === 2. Opret og skift branch === * Opret ny branch og skift til den: git switch -c player-attack * Skift mellem eksisterende branches: git switch main git switch player-attack ---- === 3. Lav ændringer og commit === * Foretag ændringer i filer (fx i Godot-projektet) * Commit dine ændringer: git add . git commit -m "Tilføjet Attack animation til Player" ---- === 4. Visualiser historikken === Det er vigtigt at se, hvordan branches udvikler sig: git log --oneline --graph --decorate --all ---- === 5. Merge tilbage til main === * Skift til main: `git switch main` * Merge: `git merge player-attack` * Push til remote: `git push origin main` ---- === 6. Refleksionsspørgsmål === * Hvorfor bruger vi branches i stedet for at arbejde direkte på main? * Hvad sker der, hvis to commits ændrer samme linje i en fil? * Hvordan kan man undgå merge-konflikter i større projekter? * Hvordan kan visualisering af historik hjælpe med at forstå branch-strukturen? ---- === 7. Ekstra øvelse: Merge konflikt === - Opret branch: `git switch -c feature/a` - Foretag ændringer i samme fil på main og på feature/a - Commit begge ændringer - Merge: `git switch main && git merge feature/a` - Hvis konflikt opstår: løs konflikten, commit og fortsæt - Dokumentér hvad der skete ==== Branches og workflow til spiludvikling ==== Mål: * Du kan arbejde med branches og forstå et workflow for samarbejde i spilprojekter. * **Hvorfor:** Branches gør det muligt at udvikle nye funktioner uden at påvirke hovedprojektet (main branch). * **Hvordan:** Vi __opretter__, __skifter__ til og __merger__ branches. === Teori === * `git branch ` – opretter en ny branch. * `git checkout ` – skifter til branch. * `git merge ` – fletter branch tilbage til hovedbranch. * Branches giver mulighed for at arbejde på features eller eksperimenter uden risiko for main. === Øvelser === * Opret en branch til nyt spilfeature: `git branch feature-movements` * Skift til branchen: `git checkout feature-movements` * Lav en ændring i Godot (fx tilføj en ny scriptfil), add og commit. * Skift tilbage til main: `git checkout main` * Merge din feature: `git merge feature-movements` * Push alle branches: `git push origin main` === Checkpoints === * Din feature-fil er nu i main. * `git log --oneline --graph` viser branch og merge. * Du kan forklare, hvorfor man bruger branches i projekter med flere udviklere. ---- [[{}git:git_forloeb|Til oversigt]]