Versionshantera mera med Git

"Bättre undervisning och inlärning tillsammans" skalderar webbtjänsten GitHub, som sedan några veckor tillbaka satsar stort på att få både studenter och lärare att börja använda deras tjänst för versionshantering med Git. Det tycker även jag att ni ska göra, då det är ett mycket kraftfullt verktyg med många användningsområden för den uppfinningsrike.

Vad är då Git och poängen med versionshantering? Jobbar du ensam är det ett smidigt sätt att hålla koll på och ångra ändringar du gjort, men framförallt är det ett utmärkt sätt att jobba tillsammans och dela filer. Lite grann som Google Docs, men mycket mer sofistikerat. Kort beskrivet så använder man ett "repositorium" där alla filer för uppsatsen, datainsamlingen eller you name it samlas. Medlemmar i gruppen kan sedan "checka ut" filer, göra ändringar, och sedan checka in dem igen ("commit"). Git håller då koll på vem som ändrade, när det ändrades och självklart vad som ändrats.

Om du idag har följande system för att versionshantera din uppsats till exempel, där du gör kopior av samma fil med olika namn typ "Min uppsats 1.doc", "Min uppsats 2.doc" och "Min uppsats, nästan klar.doc" så tror jag du kommer uppskatta Git. För varje ändring eller "commit" du checkar in behöver du skriva en liten beskrivning av vad du gjort, så att det snabbt går att se vad du ändrat eller lagt till (och kanske varför). Varje fil får då en historik så att du enkelt kan gå tillbaka till en tidigare version ifall något inte blir bra. Git hanterar detta för alla användare som samarbetar på en fil, och slår ihop alla "commits" som "pushas" till en ständigt uppdaterad version i repositoriet. Denna version synkas sedan vanligtvis för alla inblandade med kommandot "pull".

Git kan hantera vilka filer som helst, men fungerar bäst med filer som sparas som ren text för att kunna visa upp och markera skillnader mellan olika revisioner. Microsoft Word-dokument t ex sparas faktiskt inte på detta sätt, vilket man kanske kan tro, utan binärt. Git kan då inte visa på individuella skillnader i dokumentet eftersom hela filen skrivs om, och man får istället förlita sig på de "commit-meddelanden" som beskriver ändringen. Word-filer är därför heller inte lämpliga att samarbeta kring, då det i princip är omöjligt för flera personer att arbeta med samma dokument samtidigt. Formatet Markdown är att föredra, då både innehåll och formatering sparas som ren och lättläslig text.

Här på KIB använder vi Git för den mesta programmering som sker, t ex KIB-appen och Bibliometrisystemet. Git skapades ursprungligen just för detta ändamål, men har på senare tid fått ett uppsving inom den akademiska världen när det kommer till forskning och kollaborativt skrivande. Här är ett par förhoppningsvis inspirerande lästips som beskriver hur Git kan användas, oavsett var du är i din forskarbana:

Git can facilitate greater reproducibility and increased transparency in science av Karthik Ram, som dessutom använt Git under skrivandet och lagt upp den på GitHub! GitHub, Academia, and Collaborative Writing av Harrison Massey.

GitHub då, ger alltså gratis konton till studenter och lärare världen över för att centralt lagra och hantera privata repositorium. (Det är alltid gratis med öppna och publika "repos"). Det går utmärkt att använda Git utan GitHub, men GitHub som företag har gjort det hela mer användarvänligt genom bra hjälp för nybörjare och bättre funktioner, särskilt om du skulle vilja hantera dina texter. Detta är något bland annat lärare har börjat experimentera med. Det finns fortfarande en hel del önskemål för vetenskapligt bruk, men det är ett otroligt spännande område att följa om du frågar mig, och jag diskuterar det gärna här på bloggen, via mail eller om du har vägarna förbi biblioteket.

Mikael Jergefelt

Bibliotekarie och systemutvecklare. Mest knackar jag kod för KIB:s webb och andra system.