Wat is Git?
Veruit het meest gebruikte moderne versiebeheersysteem ter wereld is tegenwoordig Git. Git is een volwassen, actief onderhouden opensourceproject dat oorspronkelijk in 2005 werd ontwikkeld door Linus Torvalds, de beroemde maker van het Linuxkernel-besturingssysteem. Een verbluffend aantal softwareprojecten is afhankelijk van Git voor versiebeheer, waaronder commerciële projecten en open source. Ontwikkelaars die met Git hebben gewerkt, zijn goed vertegenwoordigd in de pool van beschikbare talenten op het gebied van softwareontwikkeling en het werkt goed op een breed scala aan besturingssystemen en IDE's (Integrated Development Environments).
Met een gedistribueerde architectuur is Git een voorbeeld van een DVCS (Distributed Version Control System). In plaats van slechts één plaats te hebben voor de volledige versiegeschiedenis van de software, zoals gebruikelijk in ooit populaire versiebeheersystemen zoals CVS of Subversion (ook bekend als SVN), is in Git de werkkopie van de code voor elke ontwikkelaar ook een repository die de volledige geschiedenis van alle wijzigingen kan bevatten.
Git is niet alleen gedistribueerd, maar is ook ontworpen met het oog op prestaties, beveiliging en flexibiliteit.
A staggering number of software projects rely on Git for version control, including commercial projects as well as open source. Developers who have worked with Git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).
Having a distributed architecture, Git is an example of a DVCS (hence Distributed Version Control System). Rather than have only one single place for the full version history of the software as is common in once-popular version control systems like CVS or Subversion (also known as SVN), in Git, every developer's working copy of the code is also a repository that can contain the full history of all changes.
In addition to being distributed, Git has been designed with performance, security and flexibility in mind.
Prestaties
De rauwe prestatiekenmerken van Git zijn erg sterk in vergelijking met veel alternatieven. Nieuwe wijzigingen aanbrengen, branching, samenvoegen en vergelijken van eerdere versies zijn allemaal geoptimaliseerd voor prestaties. De algoritmen die in Git zijn geïmplementeerd, maken gebruik van diepgaande kennis over algemene kenmerken van echte broncodebestandsstructuren, hoe ze gewoonlijk in de loop der tijd worden gewijzigd en wat de toegangspatronen zijn.
In tegenstelling tot sommige versiebeheersoftware laat Git zich niet misleiden door de namen van de bestanden om te bepalen wat de opslag- en versiegeschiedenis van de bestandsstructuur moeten zijn, in plaats daarvan concentreert Git zich op de inhoud van het bestand zelf. Broncodebestanden worden immers vaak hernoemd, gesplitst en herschikt. Het objectformaat van de Git-repositorybestanden maakt gebruik van een combinatie van delta-codering (waarbij verschillen in inhoud worden opgeslagen) en compressie, waarbij de inhoud van de map en de metagegevens van de versie expliciet worden opgeslagen.
Gedistribueerd zijn biedt ook aanzienlijke prestatievoordelen.
Stel dat een ontwikkelaar, Alice, wijzigingen aanbrengt in de broncode, een functie toevoegt voor de komende release 2.0, en die wijzigingen vervolgens commit met beschrijvende berichten. Vervolgens werkt ze aan een tweede functie en deze wijzigingen commit ze ook. Uiteraard worden deze als afzonderlijke stukken werk opgeslagen in de versiegeschiedenis. Alice schakelt vervolgens over naar de versie 1.3-branch van dezelfde software om een bug op te lossen die alleen die oudere versie betreft. Het doel hiervan is om het team van Alice in staat te stellen een release voor een bugfix te verzenden, versie 1.3.1, voordat versie 2.0 gereed is. Alice kan dan terugkeren naar de 2.0-branch om verder te werken aan nieuwe functies voor 2.0. Dit alles kan gebeuren zonder toegang tot het netwerk en is dus snel en betrouwbaar. Ze zou het zelfs in een vliegtuig kunnen doen. Als ze klaar is om alle individueel vastgelegde wijzigingen naar de externe repository te sturen, kan Alice ze in één opdracht pushen.
gerelateerd materiaal
Git cheat sheet
Oplossing bekijken
Git leren met Bitbucket Cloud
Beveiliging
Git is ontworpen met de integriteit van de beheerde broncode als topprioriteit. De inhoud van de bestanden, evenals de werkelijke relaties tussen bestanden en mappen, versies, tags en commits, al deze objecten in de Git-repository zijn beveiligd met een cryptografisch veilig hash-algoritme, genaamd SHA1. Dit beschermt de code en de wijzigingsgeschiedenis tegen zowel onbedoelde als kwaadwillige wijzigingen en zorgt ervoor dat de geschiedenis volledig traceerbaar is.
Met Git kun je er zeker van zijn dat je een authentieke inhoudsgeschiedenis van je broncode hebt.
Sommige andere versiebeheersystemen zijn niet beveiligd tegen geheime wijzigingen op een later tijdstip. Dit kan een ernstig beveiligingsprobleem zijn voor elke organisatie die afhankelijk is van softwareontwikkeling.
Flexibiliteit
Een van de belangrijkste ontwerpdoelstellingen van Git is flexibiliteit. Git is in meerdere opzichten flexibel: wat betreft support voor verschillende soorten niet-lineaire ontwikkelingsworkflows, in zijn efficiëntie in zowel kleine als grote projecten en in de compatibiliteit met veel bestaande systemen en protocollen.
Git is ontworpen om branches en tags als eersteklas burgers te ondersteunen (in tegenstelling tot SVN) en activiteiten die betrekking hebben op branches en tags (zoals samenvoegen of terugzetten) worden ook opgeslagen als onderdeel van de wijzigingsgeschiedenis. Niet alle versiebeheersystemen beschikken over dit niveau van tracering.
Versiebeheer met Git
Git is tegenwoordig de beste keuze voor de meeste softwareteams. Hoewel elk team anders is en zijn eigen analyses zou moeten maken, zijn dit de belangrijkste redenen waarom versiebeheer met Git de voorkeur heeft boven alternatieven:
Git is goed
Git biedt de functionaliteit, prestaties, beveiliging en flexibiliteit die de meeste teams en individuele ontwikkelaars nodig hebben. Deze kenmerken van Git zijn hierboven beschreven. In een vergelijkingen met de meeste andere alternatieven vinden veel teams dat Git erg goed is.
Git is een praktijkstandaard
Git is het meest algemeen gebruikte tool in zijn soort. Dit maakt Git aantrekkelijk om de volgende redenen. Bij Atlassian wordt bijna al de broncode van onze projecten beheerd in Git.
Een groot aantal ontwikkelaars heeft al ervaring met Git en een aanzienlijk deel van de afgestudeerden heeft zelfs mogelijk alleen ervaring met Git. Hoewel sommige organisaties misschien wat meer moeten leren wanneer ze vanuit een ander versiebeheersysteem naar Git migreren, hoeven veel van hun bestaande en toekomstige ontwikkelaars niet op Git te worden getraind.
Naast de voordelen van een grote pool van talent, betekent het overwicht van Git ook dat veel softwaretools en -services van derden al geïntegreerd zijn met Git, waaronder IDE's, en onze eigen tools zoals de DVCS-desktopclient Sourcetree, software voor het traceren van issues en projecten, Jira en een codehostingservice, Bitbucket.
Als je een onervaren ontwikkelaar bent en waardevolle vaardigheden wilt ontwikkelen op het gebied van tools voor softwareontwikkeling, dan zou Git op je lijst moeten staan als het gaat om versiebeheer.
Git is een opensourceproject van hoge kwaliteit
Git is een zeer goed ondersteund opensourceproject met meer dan tien jaar solide beheer. De beheerders van het project hebben blijk gegeven van een evenwichtig oordeel en een volwassen benadering om tegemoet te komen aan de behoeften van de gebruikers op lange termijn, met regelmatige releases die de bruikbaarheid en functionaliteit verbeteren. De kwaliteit van de opensourcesoftware is eenvoudig te controleren en talloze bedrijven zijn sterk afhankelijk van die kwaliteit.
Git geniet geweldige support van de community en een groot gebruikersbestand. De documentatie is uitstekend en overvloedig, waaronder boeken, handleidingen en speciale websites. Er zijn ook podcasts en videohandleidingen.
Open source zijn verlaagt de kosten voor hobbyistische ontwikkelaars, omdat ze Git kunnen gebruiken zonder een vergoeding te betalen. Voor gebruik in opensourceprojecten is Git ongetwijfeld de opvolger van de vorige generaties succesvolle opensource-versiebeheersystemen, SVN en CVS.
Kritiek op Git
Een veelgehoorde kritiek op Git is dat het moeilijk te leren kan zijn. Sommige terminologie in Git zal nieuw zijn voor nieuwkomers en voor gebruikers van andere systemen kan de Git-terminologie anders zijn. Zo heeft revert
in Git een andere betekenis dan in SVN of CVS. Desalniettemin is Git zeer capabel en biedt het zijn gebruikers veel krachtige mogelijkheden. Het kan even duren om dat vermogen te leren gebruiken, maar als het eenmaal is geleerd, kan het team die kracht gebruiken om hun ontwikkelingssnelheid te verhogen.
Voor teams die afkomstig zijn van een niet-gedistribueerde VCS lijkt het een goede zaak om een centrale repository te hebben die ze niet willen verliezen. Hoewel Git is ontworpen als een gedistribueerd versiebeheersysteem (DVCS), kun je met Git nog steeds beschikken over een officiële, canonieke repository waar alle wijzigingen in de software moeten worden opgeslagen. Met Git, omdat de repository van elke ontwikkelaar compleet is, hoeft hun werk niet beperkt te worden door de beschikbaarheid en prestaties van de 'centrale' server. Tijdens storingen of wanneer de server offline is, kunnen ontwikkelaars nog steeds de volledige projectgeschiedenis raadplegen. Omdat Git flexibel is en gedistribueerd wordt, kun je werken zoals je gewend bent, maar profiteer je van de bijkomende voordelen van Git, waarvan je misschien niet eens beseft dat je ze mist.
Nu je begrijpt wat versiebeheer is, wat Git is en waarom softwareteams het zouden moeten gebruiken, lees dan verder om te ontdekken welke voordelen Git kan bieden voor de hele organisatie.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.