Beginnen met Git
Sorry, this post is in Dutch only.
Update Zondag-4-juli: Diagram en uitleg van werkdirectory naar repository toegevoegd.
Leren door uit te leggen. Dat schijnt een goede regel te zijn om zelf materie beter te begrijpen. Het is ook één van de lessen van Chad Fowler in The Passionate Programmer: be a mentor. Precies daarom heb ik deze introductie in Git geschreven. Ik ben zelf namelijk een échte Git-beginner. In dit artikel verken ik enkele Git grondbeginselen — zonder af te dalen tot de technische catacomben. Als je al bekend bent met Git dan is deze tekst waarschijnlijk niet voor jou bedoelt.
Het viel mij op dat er relatief weinig in het Nederlands is geschreven over Git. De documentatie in het Engels daarentegen is overvloedig en van hoge kwaliteit. Onderaan dit artikel heb ik een aantal verwijzingen opgenomen naar bronnen over Git. Dit artikel is slechts inleidend van aard en stimuleert hopelijk om meer te weten te komen over het fascinerende Git.

Decentraal versiebeheer
Git is een versiebeheerprogramma waarmee veranderingen in computercode — of eigenlijk ieder willekeurige platte tekst — kunnen worden bijgehouden. Versiebeheer wordt in het Engels vaak aangeduid met version control of source control management (SCM). Version control staat zelfs als stap één in de 12 steps to Better Code van de bekende programmeur Joe Spolsky. Git zelf is eigenlijk een evolutie op al bestaande versiebeheersystemen — zoals het veel gebruikte Subversion (svn). Git is in 2005 door Linus Torvalds geschreven uit onvrede met bestaande systemen. Alle al bestaande versiebeheersystemen waren in zijn ogen te traag. En zoals een goed hacker betaamd is dat een goede reden om zelf iets te ontwikkelen. Strikt gezien is Git een distributed version control system (DVCS) waardoor het mogelijk is om code decentraal te ontwikkelen. Ideaal voor een geglobaliseerde wereld.
Respository: check out, check in
De ruggengraat van Git is de repository. De repository is een database waarin alle bestanden en hun verschillende versies zijn opgeslagen. Iedere Git-gebruiker kan een check-out doen van de laatste versie van de bestanden. Vervolgens kunnen de bestanden (de werkdirectory) worden bewerkt: het programmeren. Na het maken van alle aanpassingen kunnen de wijzigingen worden bijgewerkt in de repository door de bestanden weer in te checken. Bij het in-checken van de aangepaste versie worden er meta-gegevens opgeslagen zoals welke wijzingen er zijn gemaakt en door wie.
Bij een gedistribueerd systeem zoals Git is er vaak sprake van een local repository en een remote repository. Waarbij vaak de remote repository vaak de centrale respository is, waar de verschillende gebruikers hun wijzigingen naartoe sturen (push) en veranderingen van andere ophalen (pull). Echter bij Git beschikken alle lokale repositories over de gehele bestandsgeschiedenis en doen dus niks onder voor de remote repository.
Werkdirectory, Staging en Repository
Er zijn drie logische niveau’s waarmee Git werkt. De werkdirectory waarin bestanden kunnen worden bewerkt. Het staging niveau, waarin bestanden worden klaargezet voor opslag in de repository. En als derde niveau de bestanden zoals opgeslagen in de repository. Het is van essentieel belang om deze verdeling te begrijpen, omdat elke wijziging deze stappen moet doorlopen. Het volgende plaatje uit de Git Reference illustreert de verschillende niveau’s.

Branches
Een krachtige eigenschap van Git is de mogelijkheid om geïsoleerd aan nieuwe functionaliteiten te werken. Met behulp van branches kan er — zonder de productie-code aan te tasten — gewerkt worden aan bijvoorbeeld verbeteringen en uitbreidingen. De scheiding van de productie- en ontwikkelingomgeving zorgt ervoor dat de productie-omgeving ten alle tijde beschikbaar is. Veranderingen in branches kunnen na testen en acceptatie terugstromen met behulp van een merge naar de hoofdtak (master).
Aan de slag met Git!
Hoewel Git onder de moterkap behoorlijk complex kan worden, moet je daar in het begin niet te veel aandacht aan schenken. Dat schrikt alleen maar af. Als je eenmaal aan de slag gaat met Git en het conceptuele model beter begrijpt, loop je vanzelf tegen de geavanceerde mogelijkheden aan. Git is beschikbaar voor alle bekende platformen en is ook op Windows gemakkelijk te installeren (zie de onderstaande screencast).
Dus: Download Git en ga ermee de slag.
Meer weten over Git?
Nederlands
- Waarom Git beter is dan X — een vurig betoog waarom Git beter is dan andere SCM-systemen
- Pro Git – vertaling (in uitvoering) van het uitgebreide boek van Scott Chacon
Engels
- Version Control for Designers — heldere introductie voor niet informatici en tegelijkertijd dé inspiratiebron voor dit artikel
- Officiële Git documentatie — overzicht van verschillende bronnen voor verschillende doelgroepen
- GitCasts — screencasts over Git

