Git versionsstyring

Versionsstyring er obligatorisk i forbindelse med softwareudvikling, men kan også bruges til mange andre former for data, f.eks. dokumenter, konfiguration og præsentationer. Man kan bruge Git lokalt og samarbejde med andre via GitHub, men en lokal privat Git server kan meget af det samme som den offentlige GitHub.

Git Versionsstyring

Når man laver softwareudvikling kan et enkelt projekt godt bestå af flere hundrede og nogle gange tusinde filer med kildekode. Hvis man så også er flere personer der arbejder på det samme projekt, så er det altafgørende at man har et system til versionsstyring.

Centraliseret versionsstyring

Traditionelt har versionsstyring været et centraliseret versions styrings system. Man har en server som har alle versioner af de enkelte filer, og så kan brugerne lave et "tjek ud" af en eller flere filer han vil arbejde på. Ulempen ved disse systemer er så at der typisk kun er 1 person der kan tjekke den samme fil ud. Så må andre vente til at filen bliver tjekket ind igen, og det bliver deres tur. En anden ulempe er at man har et "single point of failure". Hvis serveren af en eller anden grund ikke er tilgængelig, så stopper alt så længe.

Eksempler på centraliserede versionsstyrings systemer, som jeg har arbejdet med i tidens løb: CVS, SourceSafe og Team Foundation Server.

Distribueret versionsstyring

I 2005 udviklede Linus Torvald, som er forfatteren til Linux, et nyt versionsstyrings system Git. Git er et distribueret versionsstyrings system. Git versionsstyring er noget anderledes end de traditionelle versionsstyrings systemer. Alle versioner og alt historik kan være i et repository lokalt hos de enkelte udviklere. Man kan også have et fælles repository, som er tilgængelig for flere udviklere der arbejder sammen. Det kunne f.eks. være GitHub, men det kan også bare være en anden computer med Git installeret.

Først på det tidspunkt hvor en udvikler vil sende sine ændringer ind i et fælles respository, så laver han en "merge" (hvis andre har ændret i den samme fil). Dermed er det ikke længere nødvendigt at tjekke en fil ud, før den ændres. Det er fundamentalt anderledes end de traditionelle versionsstyrings systemer. For mig gik der en del tid før jeg kunne se det smarte i det. Når man så har vænnet sig til tanken, så mener jeg nu, at det er en rigtig god metode.

Værktøjer

Git versionsstyring er i sig selv et kommandolinie værktøj, som anvendes ved at skrive kommandoer på kommandolinien. Der er så mange der har lavet forskellige grafiske brugerinterfaces ovenpå kommandolinie værktøjet. Måske for at gøre det lidt nemmere at anvende, eller måske mere brugervenligt.

Det kan også være rigtig fint at anvende git værktøjer med et grafisk brugerinterface, og måske en god metode til at komme igang med git. I starten brugte jeg værktøjet Sourcetree, og der findes mange andre som også er rigtigt fine.

Men...

Det er vigitigt at at være opmærksom på, at alle de grafiske git værktøjer er bygget ovenpå kommandolinie værktøjet git. Derfor er disse grafiske værktøjer en fortolkning af git værktøjet, som kun indeholder en delmængde af funktionaliten i git.  Og når der er noget som går galt, så får man fejlmeldinger som kommer fra kommandolinie værktøjet. Det kan nogle gange være lidt svært at forstå hvad der er galt, hvis man kun kender det grafiske værktøj.

Derfor vil jeg anbefale at starte med at lære kommandolinie værktøjet git, også selvom det måske er lidt mere omstændigt. Fidusen ved at gøre det, er at har man først styr på kommandolinie værktøjet, så vil man have nemt ved at forstå alle de varianter af grafiske værktøjer man møder, og de fejlmeldinger de kan finde på at smide efter dig.

Mange moderne udviklingsmiljøer har også indbygget understøttelse af git, og det er rigtig fint. Så kan man bruge git i udviklingsmiljøet til "dagligdags ting", og så kan man gå ud på kommandolinien når man skal noget som er lidt mere specielt.

Lær git versionsstyring på kommandolinien

Hvis du har lyst til at lære mere om git, så kan jeg anbefale bogen "Pro Git", den kan gratis hentes som en pdf-fil fra git-scm.com, hvor man også kan hente installationsfiler til git. Du er også velkommen til at snakke med mig, jeg vil gerne hjælpe dig med at komme i gang med git.