Jei esate vienas iš milijonų kūrėjų bendruomenės, tada greičiausiai jau girdėjote apie versijos valdymo sąvoką. Tai yra galingas įrankis ar sistema, padedanti rūpintis savo darbu, leidžianti greitai judėti failais, dokumentais ir kita su projektu susijusi informacijos kolekcija. Rinkoje yra daugybė įrankių, naudojamų tokio tipo darbui - tiek patentuotų, tiek atvirų. „Git“ yra viena iš populiariausių ir plačiausiai naudojamų versijų valdymo sistemų šiandieniniame pasaulyje. Stulbinantis projektų skaičius priklauso nuo „Git“ versijos valdymo. „Git“ yra nemokama ir atvirojo kodo paskirstytų versijų kontrolės sistema, skirta stebėti šaltinio kodo pokyčius programinės įrangos kūrimo metu.
„Git“ projektą reprezentuoja duomenų struktūra, vadinama saugykla, kurioje saugoma visa su projektu susijusi informacija, įskaitant visą projekto istoriją nuo pat jo pradžios. Jame stebimi visi laikui bėgant atlikti failų pakeitimai, nustatant laiko juostą, kai tęsiate projektą. Saugyklą savo ruožtu sudaro atskirų projekto turinio nuotraukų rinkinys - failų ir saugyklų rinkinys - vadinamas įpareigojimais. Kai norite pasidalyti savo projekto raida su pasauliu, turite jį nustumti į nuotolinio valdymo pultelį, prie kurio turite rašymo prieigą. Vietinės filialai nėra automatiškai sinchronizuojami su nuotolinėmis saugyklomis - jūs turite aiškiai nuspausti filialus, kuriuos norite bendrinti.
„Git“ mano, kad jos duomenys labiau panašūs į momentinių vaizdų rinkinį, pavyzdžiui, į mažą failų sistemą ar projekto, pavadinto „Commits“, versijas. Kiekvieną kartą įsipareigodamas arba bet kuriuo metu išsaugodamas projekto būseną, „Git“ iš esmės fotografuoja, kaip šiuo metu atrodo jūsų failai, ir saugo nuorodą į tą momentinę nuotrauką. Įpareigojimo objektas turi kiekvieno saugyklos pakeitimo metaduomenis, įskaitant autorių, įsipareigotoją, įsipareigojimo datą ir žurnalo pranešimą. Kiekvienas įsipareigojimas nurodo medžio objektą, kuriame užfiksuota kapinyno būklė tuo metu, kai įsipareigojimas buvo atliktas, visa tai viena visa nuotrauka. Kai keičiate kodą, sukuriate saują įsipareigojimų - atskirą įsipareigojimą kiekvienam pakeitimui. „Git“ kiekvienam įsipareigoja unikalų ID, kuris seka, ką, kada ir kas padarė.
Kiekvienas kūrėjas turi savo privatų saugyklą, skirtą jų pokyčiams sekti. Jūs atliekate pakeitimus vietoje, o kai būsite pasirengę pasidalyti jais su kitais kūrėjais, jūs juos perkelsite į saugyklą, kurią visi bendrinate. Įsipareigokite išsaugoti atliktus pakeitimus tik vietiniame saugykloje, bet ne nuotoliniame saugykloje. Jūsų įpareigojimai nėra automatiškai sinchronizuojami su nuotoliniu saugykla - turite aiškiai perduoti pavedimus, kuriuos norite bendrinti. Kai naudojate „push“ komandą, pakeitimus pritaikote ankstesnėje saugykloje. Kiekvienas atvirojo kodo projektas turi savo būdą priimti pakeitimus. Kai kurie projektai naudoja visiškai išplatintą versijų valdymo sistemą, kurioje pagrindinio saugyklos pakeitimus gali perduoti tik vienas asmuo, tuo tarpu yra bendro naudojimo saugyklos modelis, kurį visi kūrėjai gali perkelti į bendrą saugyklą..
- Stumimas ateina po įsipareigojimo. „Git“ įrašo įrašai ir saugyklos pakeitimų stebėjimas, kai kiekvienas įsipareigojimas nurodo medžio objektą, kuriame užfiksuota saugyklos būsena tuo metu, kai įsipareigojimas buvo atliktas, visa tai viena visa nuotrauka. Bet įsipareigoja išsaugoti pakeitimus tik vietiniame saugykloje, bet ne nuotoliniame saugykloje. „Git push“ atnaujina atliktus pakeitimus ir leidžia juos nusiųsti į nuotolinę saugyklą, kur visi kūrėjai gali prieiti prie jų. Kai naudojate „push“ komandą, ji tiesiog atnaujina jūsų pakeitimus į aukštesnio lygio saugyklą.
- Git įsipareigojimai yra vietinės reikšmės, jie yra užrašomi tik mašinoje, kurioje įvykdomi įsipareigojimai. Komanda „git įsipareigoti“ naudojama norint liepti „Git“ išsaugoti pakeitimus vietinėje saugykloje, o prieš naudodamiesi komanda „git įsipareigoti“, turite tiksliai pasakyti „Git“, kuriuos pakeitimus norite įtraukti į įsipareigojimą. Galite naudoti komandą „git push“, norėdami perkelti vietinio saugyklos įsipareigojimus į nuotolinę saugyklą. „Stumti“ komanda atnaujina naujus vietinius įsipareigojimus nuotoliniame serveryje. Stumti reikia dviejų argumentų: nuotolinio pavadinimo (kilmės) ir šakos pavadinimo (pagrindinio).
Trumpai tariant, įsipareigojimas yra pagrindinis Git pokyčių vienetas. Skirtingai nuo kitų centralizuotų versijų valdymo modelių, „Git“ savo duomenis laiko labiau panašiais į momentinių vaizdų rinkinį, kuris vadinamas įpareigojimais. Jie yra tarsi viso saugyklos turinio momentinė nuotrauka kartu su visa su projektu susijusia informacija ir šios saugyklos būsenos santykiais su kitomis įrašytomis būsenomis, nes laikui bėgant turinys vystėsi. Įpareigojimo objektas turi kiekvieno saugyklos pakeitimo metaduomenis, įskaitant autorių, įsipareigotoją, įsipareigojimo datą ir žurnalo pranešimą. Bet įsipareigoti išsaugoti pakeitimus tik vietiniame saugykloje, bet ne nuotoliniame saugykloje. „Git push“ atnaujina atliktus pakeitimus ir leidžia juos nusiųsti į nuotolinę saugyklą, kur visi kūrėjai gali prieiti prie jų.