Git

Git er et versjonskontrollsystem, en type programvare. Det kjennetegnes ved å være distribuert og ikke mappehierarki-basert (se Egenskaper). Et viktig designkriterium for Git var hastighet ved sammenfletting (merging). Git ble påbegynt av Linus Torvalds, men på et tidlig tidspunkt overtatt av Junio Hamano, som nå leder videre utvikling og vedlikehold. Blant andre distribuerte versjonskontrollsystemer kan nevnes Mercurial, som ble startet omtrent samtidig med Git, og Bitkeeper, en kommersiell forløper som var den viktigste inspirasjonskilden for Git.

Begreper og kommandoer

Selv om git funksjonalitet er tilgjengelig vha deskto-app (SourceTree), tillegsfunskjonalitet på populære editorer (Visual Studio, IntelliJ), intranett webapp (bitbucket), til og med internet web sites (github) har den først hatt en kommandospråk.
I Git, en tilfeldig mappe kan gjøres om til et git repository (med git kommandoene init eller clone). Da etableres det en undermappe med navn .git. I denne lagres kopier med historikk av filsett i mappen over og i dets undermapper (Det stabile settet kalles Master, de midlertidige kalles branch). Filene utenfor .git mappen arbeider man med (det settet man jobber på kalles Head). 
Man kan ha filer som git holder øye med (tracked), andre filer fortsatt ikke under versjonskontroll (untracked, kan legges til med add kommando, flyttes med mv, slettes med rm), og det kan være filer git ikke skal bry seg om (nevnt i filen .gitignore).  Endringer i filene  oppdages av git (modified) og kan klargjøres (staged -med add) og lagres i historikken (ved å ta en kommentert snapshot med commit), Det kan søkes etter tekst  i mappen (grep).
Versjoner identifiseres med første 6-7 siffre av en hashverdi returnert av commit. Endringer kan listes (status, log), vises (diff), forkastes (reset, revert, clean), forfatter kan identifiseres (blame), branch/filsett i fokus kan byttes med kopier i repositoriet (checkout), minneverdige versjoner kan gis navn (tag),
Synkronisering mellom disse lokale branch/filsett utføres (merge, rebase). Disse kan tenkes som leveranser mellom uavhengige repositorier. Hvis man har lokale endringer som ikke ønskes tapt pga en synkronisering kan man lagre disse midlertidig (stash) og hente tilbake (pop). Synkronisering med sett i fjerne repositorier (origin) kan utføres (fetch, remote add, pull, pull-request, push), patch kan applikeres (am).

Eksempel på bruk

Følgene avsnitt gir eksempler på hvordan man kan bruke git via kommandolinje / terminal.
Den tar utgangspunkt i at man med kommandolinje har navigert frem til en mappe som inneholder en fil ved navn "kildekode.cpp".
git init
Lager et nytt git respository i mappen du kjører kommandoen. Det er her alle kildefiler og versjoner av disse lagres. 
git add kildekode.cpp
Legger til filen kildekode.cpp midlertidig til versjonen av prosjektet du jobber på. Hvis dette ikke er oppgitt vil du dytte opp til master versjonen (master branch). 
git commit -m "lagt til første kildekodefil"
Gjør en commit på endringer og opprettelse av nye filer til versjonen av prosjektet du jobber på. Det vil si at endringene blir lagt til permanent og at 
disse dukker opp i loggen med meldingen "lagt til første kildekodefil". 
git log --graph
Viser loggen til git prosjektet som er i mappen du befinner deg i. Flagget "--graph" lager en grafisk illustrasjon 
av hvordan de forskjellige versjonene av prosjektet er flettet sammen. 
Loggen inneholder også hvem som utførte commiten, og når dette ble gjort.