Ha egyike vagy a fejlesztők közösségének millióinak, akkor valószínű, hogy már hallottál a verziókontroll fogalmáról. Ez egy nagy teljesítményű eszköz vagy rendszer, amely segít munkáinak gondozásában, lehetővé téve a fájlok, dokumentumok és a projekthez kapcsolódó egyéb információk gyors gyűjtését. És számos eszköz létezik az ilyen típusú munkákhoz a piacon, mind védett, mind nyílt forráskódúak. A Git a mai világ egyik legnépszerűbb és legszélesebb körben használt verziószabályozó rendszere, és meglepően sok projekt támaszkodik a Gitre a verziókezeléshez. A Git egy ingyenes és nyílt forráskódú elosztott verziókezelő rendszer, amelynek célja a forráskód változásainak nyomon követése a szoftverfejlesztés során.
A Git-projektet adattár, úgynevezett adattár képviseli, ahol a projekttel kapcsolatos összes információ tárolódik, beleértve a projekt teljes történetét a kezdetektől kezdve. Követi a fájlokban az idő múlásával bekövetkezett összes változást, létrehozva egy idővonalat a projekt folytatásakor. A lerakat viszont egy-egy pillanatfelvételt tartalmaz a projekt tartalmáról - fájlok és lerakatok gyűjteménye -, melyeket elkötelezetteknek hívnak. Ha meg akarja osztani a projekt fejlesztését a világgal, akkor azt egy távirányítóra kell tolnia, amelyhez írásos hozzáféréssel rendelkezik. A helyi fióktelepeket nem automatikusan szinkronizálja a távoli adattárakkal - kifejezetten meg kell nyomnia a megosztani kívánt ágakat.
Git adatait inkább pillanatképek sorozatának tekinti, mint például egy mini fájlrendszer vagy a vállalkozásnak nevezett projekt verziói. Minden alkalommal, amikor vállalja, vagy bármikor megmenti a projekt állapotát, a Git alapvetően pillanatképet készít arról, hogy a fájlok hogyan néznek ki a pillanatban, és tárolja a pillanatfelvételre való hivatkozást. Egy elkötelezett objektum metaadatokat tárol a lerakaton végrehajtott minden változásról, beleértve a szerzőt, az elkövetőt, az átadás dátumát és a naplóüzenetet. Mindegyik elkötelezettség egy faobjektumra mutat, amely rögzíti a lerakat állapotát abban a pillanatban, amikor az átadást végrehajtották, mindezt egy teljes pillanatképben. Ahogy módosítja a kódot az út mentén, maroknyi elkötelezettséget hoz létre - külön elkötelezettség minden elvégzett változtatáshoz. Git mindegyikhez egyedi azonosítót rendel, amely nyomon követi az elvégzett változtatások időtartamát, mikor és kiket.
Mindegyik fejlesztőnek saját magánraktára van, amelyben nyomon tudja követni a változásokat. Helyi változtatásokat hajt végre, és ha készen állsz arra, hogy megosszák őket más fejlesztőkkel, akkor visszahelyezik őket az összes megosztott tárolóba. A Kötelezettségvállalás a végrehajtott módosításokat csak a helyi lerakatba menti, a távoli lerakatba nem. A kötelezettségeidet nem automatikusan szinkronizálja a távoli tárolóval - kifejezetten meg kell nyomnia a megosztani kívánt kötelezettségvállalásokat. A push parancs használatakor a módosításokat alkalmazza az upstream lerakatba. Minden nyílt forráskódú projektnek megvan a maga módja a változások elfogadására. Egyes projektek egy teljesen elosztott verziókezelő rendszert használnak, amelyben csak egy ember tudja végrehajtani a változtatásokat a főtárban, míg van egy megosztott lerakatmodell, ahol az összes fejlesztő eljuthat egy megosztott adattárba..
- A tolás elkötelezettség után jön. A Git kötelezettségvállalási rekordok és a tárolóban bekövetkező változások nyomon követése mindegyik elkötelezettségre egy olyan objektumra mutat, amely egy teljes pillanatképben rögzíti a lerakat állapotát abban a pillanatban, amikor a végrehajtást végrehajtották. A vállalás azonban a változtatásokat csak a helyi lerakatra menti, a távoli lerakatra azonban nem. A Git push frissíti az elkötelezett változtatásokat, és lehetővé teszi, hogy elküldje azokat a távoli lerakathoz, ahol az összes fejlesztő hozzáférhet hozzájuk. A push parancs használatakor egyszerűen frissíti a változásokat az upstream lerakatba.
- A Git-kötelezettségvállalások helyi jelentéssel bírnak, és csak azon a gépen kerülnek rögzítésre, amelyen a kötelezettségvállalások ténylegesen előfordulnak. A „git vállalás” parancs arra szolgál, hogy megmondja Gitnek, hogy mentse a módosításokat a helyi lerakatba, és a „git véglegesítés” parancs használata előtt külön meg kell mondania Gitnek, hogy mely változtatásokat kívánja belefoglalni egy kötelezettségvállalásba. A „git push” paranccsal áthelyezheti a helyi lerakaton lévő kötelezettségvállalásokat egy távoli lerakatra. A „push” parancs frissíti a távoli szerveren lévő új helyi kötelezettségeket. A push két érvre épül: a távoli név (származási hely) és a fióknév (fő).
Dióhéjban, az elkötelezettség a Git változásának alapvető eleme. Más központosított verzióvezérlő modellektől eltérően, Git az adatait inkább pillanatképek sorozatának tekinti, amelyeket elkötelezettségnek neveznek. Olyanok, mint egy pillanatkép a teljes lerakattartalomról, a projekthez kapcsolódó minden információval, valamint a lerakat állapotának más rögzített állapotokkal való kapcsolatával kapcsolatban, mivel a tartalom az idő múlásával fejlődött. Egy elkötelezett objektum metaadatokat tárol a lerakaton végrehajtott minden változásról, ideértve a szerzőt, az elkövetőt, az átadás dátumát és a naplóüzenetet. De a kötelezettségvállalás a változtatásokat csak a helyi lerakatra menti, a távoli lerakatra azonban nem. A Git push frissíti az elkötelezett változtatásokat, és lehetővé teszi, hogy elküldje azokat a távoli lerakathoz, ahol az összes fejlesztő hozzáférhet hozzájuk.