Git

Од Википедија — слободната енциклопедија
Прејди на: содржини, барај
Git-logo.svg
Логото на Git
Изворни автори Линус Торвалдс
Програмери Џунио Хамано, Линус Торвалдс и многу други
Првично издание 7 април 2005; пред 12 години (2005-04-07)
Прог. јазик C, Борнова лушпа, Tcl, Perl[1]
Опер. систем Linux, POSIX, Windows, OS X
Вид контрола на преработки
Лиценца ГНУ-ова општа јавна лиценца в2
Мреж. место git-scm.com

Git — бесплатен, отворен и распределен систем за контрола на ревизии кој е мошне брз, ефикасно може да се употребува во големи проекти и содржи иновативен систем на гранење кој поддржува нелинеарен развој [2]. Една од главните карактерситики на Git е распределениот пристап кон контролата на преработки (верзии), при што клиентите не ги превземаат само најновите промени од централен опслужувач, туку тие месно прават целосен резервен примерок на скалдиштето (анг. repository). Тоа значи дека, доколку некој од опслужувачите е недостапен поради пад, било кој од клиентските складишта кои соработуваат на дадениот проект може да се искористи за опоравување на опслужувачот. Всушност, секое превземање (анг. checkout) на клиентот е целосен резервен прмерок на сите податоци од складиштето во месниот систем. За разлика од распределениот пристап, во централизираните системи за контрола на преработки како што се CVS и Subversion, постои централен опслужувач кој ги содржи сите преработки на податотеките, а клиентите прават превземање од тоа централно место. Главен недостаток на овие системи е тоа што опслужувачот преставува критична точка и во случај на пад корисниците не можат да соработуваат или да зачувуваат промени на податотеките со кои работат. Од таа гледна точка Git, преку распределениот пристап, едноставно ги надминува сите проблеми кои се јавуваат во централизираните системи, што го прави робусен систем за соработка.

Карактеристики[уреди | уреди извор]

Значајна карактерситика на Git, како систем за контрола на преработки, преставува начинот на кој се преставуваат податоците. Концептуално, останатите системи, информациите за преработките ги чуваат како листа на промени кои се направени врз секоја податотека во текот на времето. Односно, податоците престауваат множество на податотеки и промени врз тие податотеки. Во Git податоците се чуваат како множество од целосни слики (анг. snapshots) од сите податотеки (Git ја следи целосната содржина, наместо поединечи промени на податотеки). Секогаш кога се прави потврда (анг. commit) или се зачувува состојбата на проектот во Git, системот на некој начин прави слика од тоа како изгледаат сите податотекти во моментот и зачувува референца кон таа слика. Притоа, за поголема ефикасност, доколку одредени податотеки не се променети, Git не ги зачувува повторно, туку само зачувува врска кон претходната идентична податотека која преставува дел од претходната преработка.

Бидјеќи Git прави меснен примерок на целото складиште, при работа на развивачите не е потребна врска кон некој друг компјутер или мрежа. Поради тоа, при работењето на заеднички проект голем дел од стандардните операции се извршуваат неверојатно брзо бидејќи целосната историја на складиштето се чува месно. Притоа, може едноставно да се прегледуваат разликите помеѓу одредени преработки на проектот, или пак да се работи на нови функионалности кои месно се додаваат. Всушност, ова својство е уникатно за Git бидејќи им овозможува на корисниците да работат и во случај на недостапност на мрежната врска, а сите промени да бидат прикачени подоцна кога истата ќе стане достапна.

Гранењето и спојувањето преставуваат особено важна карактеристика што значајно го издвојува Git од останатите системи за управување со изворен код. Git ја овозможува и охрабрува употребата на повеќе месни гранки до кои се пристапува целосно независно. Притоа, создавањето, спојувањето и бришењето во Git е доста брзо и трае само неколку секунди. Тоа овозможува создавање на гранки за испробување на одредена идеја, тестирање и додадавње на нови функционалности, без да постои било какво влијание врз главната линија на развој во проектот. Исто така, создавање на гранки кои содржат продукциски код и едноставно менување на контекстот на работа помеѓу подобрување, тестирање, или експериментирање. При спојување, можат експлицитно да се изберат гранките кои ќе се споделат, што им овозможува на членовите од тимот месно да испробуваат идеи без да се грижат како и кога ќе можат тие новини да се спојат со главната линија на развој.

Главните предности на Git преставуват распределениот пристап кон контролата на ревизии (што го прави доверлив во случај на падови на делови од системот), малите памтилни побарувања и брзината на извршување, иновативниот пристап на гранење и соединување (кој обезбедува ефикасно работење на поединечно и групно ниво), сцената (анг. staging area) која нуди дополнително ниво на флексибилност и безбедност пред потврдување на одредени промени, како и фактот што Git е целосно бесплатен со отворен код и може да се употребува во отворени и во комерцијални проекти. Особено позитивна преставува резенц однос peer-to-peer меѓу развивачите што ја поедноставува соработката бидејќи не наметнува хиерархиска структура, и во процесот на развој воведува поголема координација и соработка на учесниците.

Начин на работа[уреди | уреди извор]

Податотеките кои се дел од даден проект можат да бидат во три главни состојби во Git, и тоа: потврдени (анг. committed), изменети (анг. modified) и подготвени (анг. staged) [3][4]. Потврдени значи дека податоците се безбедно зачувани во месна база на податоци. Изменети значи дека одредена податотека е изменета, но тие измени не се запишани во месната база на податоци. Подготвени, значи дека изменетата податотека во тековната преработка од проектот е означена да биде запишана при следната потврда (анг. commit). Овие состојби всушност ги дефнираат трите главни делови во еден Git проект: Git именик, работен именик (анг. working directory) и сцена (анг. staging area).

Git именикот е местот каде што Git ги зачувува мета-податоците и објектната база на податоци од дадениот развоен проект. Овој именик преставува најважниот дел од Git, и е именкиот кој се копира при превземање на одредено складиште од еден во друг компјутер. Работниот именик преставува единствено превземање (анг. checkout) на една преработка на проектот. Овие податотеки се повлекуваат од компресираната база на податои од Git именикот и се зачувуваат на месниот диск за употреба или изменување. Сцената (анг. staging area) не е ништо повеќе од обична податотека, која најчесто е дел од Git именикот, и која содржи информации за тоа што влегува во следното потврдување (анг. commit).

Основниот тек на работа наједноставно може да се опише преку следните чекори:

  1. Корисникот изменува податотеки од работниот именик
  2. Податотеките се означуваат како подготвени, и се додава запис за нив во сцената
  3. Се врши потврда (анг. commit), која ги превезема сите податотеки од сцената и перманентно ја зачувува сликата (анг. snapshot) во Git именикот.

Сите податотеки од работниот именик дополнително можат да бидат во една од две состојби: следени (анг. tracked) и не-следени (анг. untracked). Следените податотеки се оние кои биле дел од претходната слика (анг. snapshot), и тие можат да бидат: не-изменети, изменети и потдогвени (анг. staged). Не-следените податотеки означуваат податотеки од работниот именик кои не биле дел од претходната слика и не се дел од сцената. При првото превземање на одредено складиште, сите податотеки се означуваат како следени и не-изменети. Како што се работи со податотеките, Git започнува да ги разграничува како изменти, оние кои се различни во однос на претходната потврда. Откатко ќе бидат означени како подготвени и ќе се изврши потврда (што ги запишува сите промени), циклусот се повторува.

Поврзано[уреди | уреди извор]

Наводи[уреди | уреди извор]

  1. „git/git.git/tree“. git.kernel.org. http://git.kernel.org/?p=git/git.git;a=tree. конс. 15 јуни 2009 г. 
  2. Git — официјална страница
  3. Scott Chacon: Pro Git, Apress, 2009
  4. http://git-scm.com/book Pro Git eBook