Git| Git-logo |
|  |
| Kūrėjas | Linus Torvalds |
| Pirmoji versija | 2005 m. balandžio 7 d. |
| Stabili versija | 2.30.0 / 2020 m. gruodžio 28 d. |
| Parašyta | C, Shell, Perl, Tcl, Python |
| Kalba | Anglų |
| Tipas | Versijų kontrolė |
| Licencija | GPLv2, LGPLv2.1 ir kitos |
| Svetainė | git-scm.com |

**Git** – atviro kodo paskirstyto versijų valdymo sistema, skirta grupei žmonių kartu rašyti, redaguoti bet kokį didelį projektą, susidedantį iš daugelio tekstinių ir kitokių dokumentų. Git pateikiama su GPL antros versijos licenzija.

Istorija
--------

Sistemą 2005 m. sukūrė Linusas Torvaldsas Linux branduolio vystymui. 2005 m. liepos 25 d. L. Torvaldsui sugrįžus dirbti prie Linux branduolio, Junio Hamano tapo pagrindiniu Git palaikytoju ir programuotoju. Git saugo jos tvarkomą projektą bei visą jo versijų istoriją kiekvieno naudotojo kompiuteryje, nepriklausomai nuo centrinio serverio.

Linux branduolys yra didelės apimties atvirojo kodo programinės įrangos projektas. Tarp 1991 ir 2002 m. programinės įrangos pakeitimai buvo perduodami kaip pataisos ir archyvuoti failai. 2002 m. Linux branduolio projektas pradėjo naudoti tobulesnę paskirstyto versijų valdymo sistemą BitKeeper.

2005 m. Larry McVoy, BitKeeper autorinių teisių savininkas, panaikino nemokamą licenciją Linux kūrėjams teigdamas, kad Andrew Tridgell atvirkštine inžinerija sukūrė SourcePuller, naudodamas BitKeeper protokolus. Po nesėkmingų derybų, trukusių daugiau nei mėnesį, Linux branduolio komanda pradėjo ieškoti naujos alternatyvos. L. Torvaldsas norėjo naujos sistemos, kurią galėtų naudoti kaip BitKeeper, tačiau atmetus komercinius variantus, joks variantas neatitiko jo iškeltų kriterijų. Tai paskatino Linusą Torvaldsą sukurti savo įrankį, atitinkantį visus jo iškeltus reikalavimus tokio tipo programinei įrangai bei naudojantis pamokomis, kurių jie išmoko naudodami BitKeeper.

Pirma veikianti programos versija buvo išleista 2005 m. balandžio 7 d. o 16 dieną į Git repozitoriją buvo įkelta didžioji dalis Linux branduolio kodo (virš 6.7 milijonų eilučių). Po dar 3 minučių buvo įkeltas pirmas kodo papildymas. Įsitikinęs, kad viskas veikia kaip ir turėtų, Linusas Torvaldsas apie tai pranešė savo el. pašto grupėje. Žinodamas, jog nori grįžti prie Linux branduolio kūrimo, L. Torvaldsas liepos 25 d. perdavė Git kodą Junio Hamano, pranešdamas, kad jis buvo „akivaizdus pasirinkimas". Maždaug po poros mėnesių buvo išleista 2.6.12 Linux branduolio versija, naudojant Git.

Junio Hamano vis dar yra pagrindinis Git palaikytojas ir programuotojas.

### Versijos

Git versijų sąrašas:

| Versija | Išleidimo data |
| --- | --- |
| 0.99 | 2005-07-11 |
| 1.0 | 2005-12-21 |
| 1.1 | 2006-01-08 |
| 1.2 | 2006-02-12 |
| 1.3 | 2006-04-18 |
| 1.4 | 2006-06-10 |
| 1.5 | 2007-02-14 |
| 1.6 | 2008-08-17 |
| 1.7 | 2010-02-13 |
| 1.8 | 2012-10-21 |
| 1.9 | 2014-02-14 |
| 2.0 | 2014-05-28 |
| 2.1 | 2014-08-16 |
| 2.2 | 2014-11-26 |
| 2.3 | 2015-02-05 |
| 2.4 | 2015-04-30 |
| 2.5 | 2015-07-27 |
| 2.6 | 2015-09-28 |
| 2.7 | 2015-10-04 |
| 2.8 | 2016-03-28 |
| 2.9 | 2016-06-13 |
| 2.10 | 2016-09-02 |
| 2.11 | 2016-11-29 |
| 2.12 | 2017-02-24 |
| 2.13 | 2017-05-10 |
| 2.14 | 2017-08-04 |
| 2.15 | 2017-10-30 |
| 2.16 | 2018-01-17 |
| 2.17 | 2018-04-02 |
| 2.18 | 2018-06-21 |
| 2.19 | 2018-09-10 |
| 2.20 | 2018-12-09 |
| 2.21 | 2019-02-24 |
| 2.22 | 2019-06-07 |
| 2.23 | 2019-08-16 |
| 2.24 | 2019-11-04 |
| 2.25 | 2020-01-13 |
| 2.26 | 2020-03-22 |
| 2.27 | 2020-06-01 |
| 2.28 | 2020-07-27 |
| 2.29 | 2020-10-19 |
| 2.30 | 2020-12-27 |

Dizainas
--------

Git leidžia keliems autoriams vienu metu keisti esamą programos kodą, per daug vienas kitam netrukdant. Tarpusavyje nepersiklojantys pakeitimai net ir tame pačiama faile sujungiami į naują versiją automatiškai, jei tik jie pakankamai toli vienas nuo kito. Žmogui tenka kištis tik jei keli autoriai perrašinėjo kodą jau visiškai ten pat. Git saugo visą kodo keitimų istoriją, lieka žinomi keitimų autoriai bei ką jie pakeitė. Prireikus visada galima grąžinti senesnę versiją, ar lyginti ją su esama.

Git dizainas yra kiek tai remiasi prieš jį pasirodžiusių versijų valdymo sistemų BitKeeper ir Monotone. BitKeeper Linux branduolio kūrėjai naudojo prieš prieš jo savininkui atimant nemokamą licenciją, o Monotone buvo svarstomas kaip BitKeeper pakaitalas, bet Linusui Torvaldsui šis neįtiko dėl itin mažo greičio.

Git iš pradžių buvo kurtas kaip žemo lygio versijų valdymo sistemos variklis, prie kurio būtų galima prijungti atskiras vartotojų sąsajas. Nuo to laiko Git tapo išsamia versijų valdymo sistema, kurią galima naudoti be papildomų priemonių.

### Dizaino bruožai

#### Sistemos paskirstymas

Git, kaip ir kitos versijų valdymo sistemos leidžia kūrėjams keliese dirbti prie to pačio projekto ar failo. Be to, turint interneto ryšį, dažniausiai galima prisijungti iš bet kurios pasaulio vietos ir įkelti savo kodo pakeitimus.

#### Suderinamumas

Git palaiko visas populiariausias modernias operacines sistemas, todėl nesvarbu kokią sistema mėgsta arba gali naudotis kūrėjas, jis visada turės prieigą prie Git saugyklos.

#### Šakojimas

Git leidžia vartotojams dirbti greta pagrindinės projekto šakos. Tai vadinama šakojimu. Šakos Git sistemoje leidžia dirbti prie kodo, nepaveikiant pagrindinės šakos. Tai leidžia pagrindinei šakai išlaikyti stabilumą ir kokybę, kol naujos funkcijos ar pakeitimai nėra baigti ar pilnai ištestuoti.

#### Lengvas ir greitas

Git naudoja benuostolinę kompresiją saugoti failus vietinėse saugykloje, todėl jie užima itin mažai vietos, o prireikus jų sistema greitai gali juos paruošti darbui. Taip pat Git gali atlikti šias ir kitas operacijas itin greitai, nes C programavimo kalba (kuria parašyta didžioji dalis Git) yra žemo lygio ir artima mašininiam kodui.

#### Prieinamumas

Git yra nemokama ir atviro kodo programinė įranga, todėl ja naudotis nereikia papildomų lėšų. Taip pat Git suderinama su visomis populiariausiomis šiuolaikinėmis operacinėmis sistemomis, todėl nepaisant jų įvairovės, visi kūrėjai gali naudoti šią versijų valdymo sistemą.

Populiarumas
------------

Stack Overflow savo metinėje kūrėjų apklausoje tris kartus įtraukė punktą apie kūrėjų naudojamas versijų valdymo sistemas. 2015 m. (16 694 atsakymų), 2017 m. (30 730 atsakymų) ir o 2018 m. (74 298 atsakymų). Git buvo akivaizdus lyderis tarp atsakiusių programuotojų, 2018 m. surinkęs net iki 87,2% balsų.

Apklausoje sudalyvavusių programuotojų naudojamos versijų valdymo sistemos:

| Pavadinimas | 2015 | 2017 | 2018 |
| --- | --- | --- | --- |
| Git | 69.3% | 69.2% | 87.2% |
| Subversion | 36.9% | 9.1% | 16.1% |
| TFVC | 12.2% | 7.3% | 10.9% |
| Mercurial | 7.9% | 1.9% | 3.6% |
| CVS | 4.2% | - | - |
| Perforce | 3.3% | - | - |
| VSS | - | 0.6% | - |
| ClearCase | - | 0.4% | - |
| Zip failų archyvai | - | 2.0% | 7.9% |
| Dalinimasis tinklu | - | 1.7% | 7.9% |
| Kita | 5.8% | 3.0% | - |
| Nei viena | 9.3% | 4.8% | 4.8% |

Šaltiniai
---------

1. 1 2 3  „Pirmas viešos programos versijos pateikimas GitHub svetainėje". Nuoroda tikrinta 2020-01-06.
2. ↑  „Paskutinė stabili versija". Nuoroda tikrinta 2020-01-06.
3. ↑  „Git kodo saugykla". Nuoroda tikrinta 2020-01-06.
4. 1 2  „GPL licencija". Nuoroda tikrinta 2020-01-06.
5. ↑  „LGPL licencija". Nuoroda tikrinta 2020-01-06.
6. 1 2 3 4  „Getting Started - A Short History of Git". Nuoroda tikrinta 2020-01-06.
7. 1 2 3  Loeliger, Jon; McCullough, Matthew (2013). *Version control with Git*. O'Reilly Media, Inc. Nuoroda tikrinta 2020-01-06.
8. 1 2  „Meet the new maintainer..". 2005-07-27. Nuoroda tikrinta 2020-01-06.
9. ↑  „Getting started - installing Git". Nuoroda tikrinta 2020-01-06.
10. 1 2  „Linus Torvalds BitKeeper blunder". Nuoroda tikrinta 2020-01-06.
11. 1 2  „Kernel SCM saga..". Nuoroda tikrinta 2020-01-06.
12. ↑  „Re: Trivia: When did git self-host?". Nuoroda tikrinta 2020-01-06.
13. ↑  . Nuoroda tikrinta 2020-01-06.  Trūksta arba tuščias parametras `|title=` (pagalba)
14. ↑  „Git Features". Nuoroda tikrinta 2020-01-06.
15. 1 2  „Re: [ANNOUNCE] Git wiki". Nuoroda tikrinta 2020-01-06.
16. ↑  „Stack Overflow Annual Developer Survey". Nuoroda tikrinta 2020-01-06.