Commandline tips: Versiebeheer voor scripts met Git
- July 9, 2018
- 0
Je hoeft geen ontwikkelaar te zijn om een versiebeheersysteem zoals Git te gebruiken. Ook voor eenvoudige scripts of configuratiebestanden is het soms handig om oudere versies te bewaren. Moeilijk is dat gelukkig niet: na het lezen van deze tips ga je meteen aan de slag met Git!
1. Repository
Git werkt steeds binnen een zogenaamde repository. Elke repository bevat een .git-map voor (onder andere) de oudere versies van jouw bestanden. Een nieuwe repository maak je als volgt aan:
mkdir Scripts
git init Scripts
De Git-commando’s in onderstaande tips werken enkel vanuit de Scripts-map of een submap ervan, omdat Git anders niet weet in welke repository je wilt werken. Voor de changelogs is het ook belangrijk dat je jouw naam en e-mailadres correct configureert:
git config –global user.name “Jouw naam”
git config –global user.email jouw.email@adres.com
2. Status
In jouw repository bewaar je wijzigingen via zogenaamde commits. Elke nieuwe versie van een script is bijvoorbeeld een commit. Het Git statuscommando toont je welke bestanden gewijzigd zijn sinds de laatste commit. Voorlopig is onze repository nog leeg, dus kopieer even een script naar de Scripts-map. Git status toont dat nu onder “Untracked files”: het script staat nog niet onder versiebeheer.
3. Bestanden toevoegen
Gebruik onderstaand commando om een bestand in Git te tracken:
git add script.sh
In de status-output verschijnt het bestand nu onder “Changes to be committed”. Het is een goede gewoonte om steeds git status te runnen, voordat je een commit uitvoert. Zo merk je tijdig of je geen bestanden bent vergeten toe te voegen (zoals een configuratiebestand dat bij het script hoort). Het volstaat immers niet om bestanden in de Scripts-map te plaatsen: pas als je ze add en commit, staan ze daadwerkelijk onder het versiebeheer van Git! Heb je alle bestanden toegevoegd? Voer dan de commit uit met een beknopte samenvatting van de wijzigingen:
git commit -m ‘eerste versie van mijn script’
4. Bestanden wijzigen
Wil je achteraf je script wijzigen? Je mag het bestand gewoon openen en aanpassen zoals voorheen, aangezien we een lokale Git-repository gebruiken, die niet gedeeld is met anderen. (Bij gedeelde Git-repositories moet je eerst de laatste wijzigingen van anderen binnenhalen. Hier gaan we in deze rubriek niet verder op in.) Daarna toont het git status-commando je welke bestanden gewijzigd zijn. Wil je de precieze wijzigingen in elk bestand nog even controleren? Dat kan met volgend commando:
git diff
Tot slot bewaar je de nieuwe versie weer via git add en git commit.
5. Geschiedenis
Vroeg of laat wil je misschien een oudere versie van jouw script bekijken. Daarvoor moet je eerst de juiste versie of revisie terugvinden. Dat gaat makkelijker als je bij elke commit een duidelijke beschrijving van jouw wijzigingen hebt meegegeven! Met het volgende commando toont Git je een beknopt overzicht van alle commits in je repository met het commit id én de bijbehorende commit message:
git log –pretty=oneline
Wil je ook datum, tijdstip én auteur van elke commit zien? Laat dan de –pretty-optie weg. Controleer nu eerst met git status of er geen wijzigingen meer zijn sinds de laatste commit. Je wilt die immers niet overschrijven met een oudere versie! Vervolgens haal je de gewenste versie terug met het git checkout-commando en het correcte commit id, bijvoorbeeld:
git checkout 7de70bfb9336adef1005900b982020b99fd9a2de script.sh
Je repository bevat nu de geselecteerde versie van het script in plaats van de laatste versie. Maar let op: Git beschouwt dat bestand nu als de laatste versie van jouw script! Ben je niet van plan om je script verder te ontwikkelen op basis van die oudere versie, dan moet je de nieuwste versie weer uitchecken, voordat je een nieuwe commit doet. Dat doe je met deze twee commando’s:
git reset HEAD script.sh
git checkout — script.sh
6. Versies vergelijken
Vind je de procedure uit tip 5 wat omslachtig? Geen probleem, want je hoeft niet meteen een oudere versie terug te halen om te kijken wat de verschillen zijn! Met het git diff-commando kan je immers ook twee willekeurige revisies van een bestand met elkaar vergelijken. Als eerste argument geef je het oude commit id op, als tweede het nieuwe commit id en als derde de bestandsnaam. Git toont je dan netjes alle verschillen tussen de twee revisies. Dat is erg handig als er bijvoorbeeld een fout is geslopen in een bepaalde versie van jouw script. Dankzij git diff zie je meteen welke code stukken je grondig moet nakijken.