Git og versionsstyring — sådan samarbejder udviklere om kode
Commits, brancher og hvorfor man aldrig mister en tidligere version
Skriver flere personer kode på samme projekt uden et fælles system, opstår hurtigt kaos: hvem har den nyeste version, hvad blev ændret og hvornår, og hvordan finder man tilbage til en version, der virkede, hvis en ny ændring introducerer en fejl? Versionsstyring løser præcis det problem ved at gemme hele historikken af ændringer, så intet arbejde nogensinde reelt går tabt.
§Hvad er versionsstyring?
Git er et distribueret versionsstyringssystem, hvilket betyder, at hver udviklers kopi indeholder hele projektets historik, ikke kun de seneste filer. Det gør det muligt at arbejde og se historikken, selv uden forbindelse til en central server, og gør systemet robust — mister man den centrale server, findes projektets historie stadig hos alle, der har hentet det.
§Grundbegreber i Git
- 01Commit: et gemt øjebliksbillede af projektets tilstand med en beskrivende besked om, hvad der blev ændret
- 02Branch (gren): en selvstændig linje af udvikling, hvor man kan arbejde uden at påvirke hovedgrenen
- 03Merge: at flette to grenes ændringer sammen igen
- 04Repository: selve projektet med al dets historik
- 05Remote: en central, delt udgave af repositoryet, som fx hostes på en tjeneste, alle kan hente fra og sende til
§Brancher og samarbejde
I praksis arbejder man sjældent direkte på hovedgrenen. I stedet opretter man en ny branch til en bestemt opgave eller rettelse, arbejder færdig der, og beder derefter om at få ændringerne gennemgået og flettet ind i hovedgrenen — det kaldes en pull request eller merge request. Det giver kolleger mulighed for at læse igennem og kommentere, før koden bliver en del af det, alle andre bygger videre på — en form for kvalitetskontrol, der ligner den, en faglærer ville give en opgave, inden den godkendes.
§Konflikter
Har to personer ændret samme linje i samme fil på hver sin branch, kan Git ikke automatisk afgøre, hvilken ændring der skal vinde — det kaldes en merge-konflikt. Systemet markerer, hvor de to versioner er uenige, og en person må manuelt vælge, hvordan de forenes. Hyppige, mindre commits og god kommunikation i teamet mindsker, hvor ofte det sker.
“Git husker alt, du beder det huske. Pointen er ikke at undgå fejl, men altid at kunne finde tilbage til før fejlen.”
— Erfaringsregel fra softwareudvikling