GitLinus Torvaldsek garatutako bertsio-kontrolsoftware bat da; hain zuzen, produktu edo konfigurazio batean egin daitezkeen aldaketak kudeatzeko programa da. Linusen helburu nagusiak mantentze-lanen fidagarritasuna eta efizientzia ziren. Git garatzerako orduan, kontuan izan zuen programa horietan egingo ziren aldaketak artxibo askokoak izango zirela.
Hasierako ideia zen Git maila baxuko motore bat izatea, bestedeveloper batzuek hori erabiliz aplikazio grafikoak sor zezaten,Cogito edoStGITen antzera. Hala ere, funtzionaltasunari dagokionez, erabateko sistema-kontrol bat bilakatu da. Indar handiko proiektu askotan erabiltzen da Git softwarea,Linuxen garapen nukleoan esate baterako. Gaur egungo software honen mantentze-lanakJunio Hamanoren esku daude. Horretarako, 280 programatzaileren laguntza du.
Giten diseinua Linus Torvaldsek Linux garatzean izandako esperientziaren emaitza da; kode mordoa jende askoren artean banatuta, kudeatuta eta mantenduta dago, helburua delarik sistemaren funtzionamendu azkarra.
Ezaugarri garrantzitsuenetakoen artean, honako hauek aurki ditzakegu:
Garapen ez lineala bultzatzen du, adarren kudeaketa azkar baten bidez, eta bertsioen arteko nahasketak ahalbidetzen ditu. Garapen ez-lineala nola doan ikusteko tresna multzo bat ere badu. Programatzaileak aldaketak berrikusten doazen heinean, aldaketak gehitzen joaten dira.
Banatutako gestioa. Gitek programatzaile bakoitzari kopia lokal bat sortzen dio, garapenaren historia osoarekin. Aldaketak adarretan banatzen dira, eta adarrak modu lokalean gordetzen; adar lokaleko aldaketak ere urruneko zerbitzarietan erregistratzen dira.
Subversion eta svk errepositorioak zuzenean erabil daitezke git-svnrekin.
Proiektu handien kudeaketan efizientzia lortzen da artxiboen arteko ezberdintasunak artxiboan bertan adierazten, beste onura batzuen artean.
Izen aldaketak fitxategien arteko berdintasunean oinarritzen dira, marka berezirik egin gabe. Honek konfusio asko ekiditen ditu.
Automatikoki, behar den heinean fitxategi berriak sortu eta bertan gordetzen dira datuak. Nahiz eta irakurketarako ez den oso eraginkorra, kontrakoa da idazteko orduan.
Git-en garapena 2005eko apirilean hasi zen, Linuxkernel-aren garatzaileek BitKeeper erabiltzeari laga ondoren. Larry McVoyk, BitKeeperrekocopyrightaren jabe zenak, doako lizentzia ukatu zien, itxura denez, Andrew Tridgellek alderantzizko-ingeniaritza aplikatu baitzien BitKeeper protokoloei.
Linusek BitKeeperren antzera erabili zitekeen sistema bat nahi zuen, baina ordukosoftware askedun sistemek ez zituzten bere beharrak betetzen, errendimenduaren atalean batez ere. Torvaldsek iturburu-kontrol sistema bat jarri zuen eredutzat, nonpatch bat jarriz, eta berarekin batera doan metadata guztia eguneratzen 30 segundo ematen dituen, eta nahiz eta proiektu itzela izan (Linuxekokernela, esaterako), denbora mantentzen den. Hau betetzeko,patching lanek 3 segundo baino gutxiago iraun beharko luketela zehaztu zuen, eta hiru sententzia gehiago gehitu zituen:
Concurrent versions system egin behar ez denaren eredutzat hartzea: zalantzarik egonez gero, aurkakoa egin.
Jasatea BitKeeper-lako lan-fluxu banatua.
Jagole boteretsuak erabili nahita edo nahigabe gertatutako datu hondaketen aurka.
Irizpide hauek orduko bertsio-kontrol sistema oro kanporatu zuen, Monotone izan ezik. Errendimendu eskaerak hori ere alde batera utzi zuen, beraz, 2.6.12-rc2 Linuxkernelarenrelease bertsioa atera ostean, Torvaldsek bere sistema idazteari ekin zion.
2005eko apirilaren 3an hasi zen garapena. Torvaldsek apirilaren 6an iragarri zuen, eta hurrengo egunean Giten garapenaren bertsio-kontrola Git bera erabiliz egiten hasi zen. 18an lehenengomerge anitza egin zen, eta 29rako bere errendimendu beharrak betetzen zituen, segundoko 6.7 Linuxkerneleko atalpathceatuz. Ekainak 16an Linuxkernelaren 2.6.12releasea Gitek kudeatu zuen.
2005eko uztailak 26an, Junio Hamanoren (proiektuko ekarle nagusitako baten) eskuetan utzi zituen mantentze lanak Torvaldsek. Bera izan zen 1.0 bertsioa argitaratzearen arduraduna urte bereko abenduaren 21ean. Gaur egun, bera da mantentze lanen arduraduna.
Erabiltzaile bakoitzak nahi bezala erabil dezakesoftware hau, hala ere, erabilera egokia honako hau da:
Master:
Adar nagusia da. Erabiltzailearen esku dagoen programa baten errepositorioari deritzo. Beraz, bertsio egonkor bat izan behar da.
Development:
Adar nagusitik ateratako bigarren bat da. Integrazio adar bat da, funtzionaltasun berri guztiak bertan integratuko dira.
Features:
Funtzionaltasun berri bakoitzarekiko adar espezifiko bat sortzen da. Hauekdevelopment adar batetik garatutakoak izango dira. Behin funtzionaltasuna garatuta, bestearekin integratzekodevelopment adarrarekikomerge bat egingo da.
Hotfix:
Horfix-ak programa garatzerako orduan sortzen direnbug-ak,masterretik ateratako adarrak dira. Horiek lehenbailehen argitaratu eta ondoren konpondu behar dira sor ditzaketen arazoengatik. Behin arazoa konponduta, master adarrarekikomerge bat egin behar da. Azkenik, eguneratuta mantentzekomaster adarradevelopment adarrarekikomerge bat egin behar da.