Git
Chapters ▾ 2nd Edition

1.3 Почеток - Основи на Гит

Основи на Гит

Значи, што е Гит на кратко? Ова е важен детал, бидејќи ако разберете што е Git и основите на функционирање, тогаш ефикасното користењето на Git веројатно ќе ви биде многу полесно. Додека го изучувате Git, обидете се да го исчистите вашиот ум за работите што можеби ги знаете за други VCS, како што се CVS, Subversion или Perforce - тоа ќе ви помогне да избегнете неразбирање додека го користите. Иако корисничкиот интерфејс на Git е прилично сличен со овие други VCS, Git складира и размислува за информации на многу поинаков начин, а разбирањето на овие разлики ќе ви помогне да избегнете да бидете збунети додека го користите.

Слики, не разлики

Главната разлика помеѓу Git и кој било друг VCS (Subversion и пријателите) е начинот на кој Git размислува за своите податоци. Концептуално, повеќето други системи ги зачувуваат информациите како листа на промени на база на датотеки. Овие други системи (CVS, Subversion, Perforce, Bazaar, и така натаму) мислат на информациите што ги чуваат како збир на датотеки и промените направени за секоја датотека со текот на времето (ова обично се опишува како контрола на верзијата базирана на делта).

Storing data as changes to a base version of each file.
Figure 4. Зачувување на податоци како промени во базната верзија на секоја датотека..

Зачувување на податоците како промени во базната верзија на секоја датотека. Git не ги мисли или ги складира своите податоци на овој начин. Наместо тоа, Git повеќе ги разгледува своите податоци како серија фотографии од минијатурен датотечен систем. Со Git, секој пат кога ќе го извршите, или ја зачувате состојбата на вашиот проект, Git во основа зема слика за тоа како изгледаат сите ваши датотеки во тој момент и зачувува референца за таа слика. За да биде ефикасен, ако датотеките не се сменија, Git не ја зачувува датотеката повторно, туку само линк до претходната идентична датотека што веќе е зачувана. Git размислува за своите податоци повеќе како прилив на снимки.

Git stores data as snapshots of the project over time.
Figure 5. Git ги складира податоците како снимки на проектот со текот на времето.

Зачувување на податоци како снимки на проектот со текот на времето. Ова е важна разлика меѓу Git и скоро сите други VCS. Ги прави Гит повторно да го преиспита речиси секој аспект од контролата на верзијата што повеќето други системи ги копирале од претходната генерација. Ова го прави Git повеќе како мини-датотечен систем со неверојатно моќни алатки изградени на врвот од него, наместо едноставно VCS. Ние ќе истражиме некои од придобивките што ги добивате, размислувајќи за вашите податоци на овој начин, кога ќе ги покриеме разграноците на Git во Гранење во Git.

Речиси секоја операција е локална

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

На пример, за да ја разгледате историјата на проектот, Git не треба да излезе на серверот за да ја добие историјата и да ја прикаже за вас - едноставно ја чита директно од вашата локална база на податоци. Ова значи дека веднаш ќе ја видите историјата на проектот. Ако сакате да ги видите промените внесени помеѓу тековната верзија на датотеката и датотеката пред еден месец, Git може да погледне до датотеката пред еден месец и да изврши пресметка за локална разлика, наместо да побара од оддалечен сервер да го стори тоа или повлечете постара верзија на датотеката од оддалечениот сервер за да го направите локално.

Ова исто така значи дека има многу малку што не можете да направите ако сте офлајн или исклучен VPN. Ако влезете во авион или воз и сакате да направите мала работа, можете да извршите среќно (до вашата локална копија, се сеќавате?) Додека не стигнете до мрежна конекција за да испратите. Ако одите дома и не можете да го направите вашиот VPN клиент да работи правилно, сеуште можете да работите. Во многу други системи, тоа е невозможно или болно. Во Perforce, на пример, не можете да направите многу кога не сте поврзани на серверот; и во Subversion и CVS, можете да уредувате датотеки, но не можете да извршите промени во вашата база на податоци (бидејќи вашата база на податоци е офлајн). Ова можеби не изгледа како голем договор, но можеби ќе бидете изненадени што може да направи голема разлика.

Git има интегритет

Сè што е во Git е проверено сумирано пред да биде зачувано и потоа се повикува со таа контролна сума. Ова значи дека е невозможно да се промени содржината на која било датотека или директориум без да се знае Git. Оваа функција е вградена во Git на најниско ниво и е составен дел на неговата филозофија. Не можете да изгубите информации во транзит или да добиете корупција на датотеката без да може Git да ја открие.

Механизмот што го користи Git за оваа проверка е наречен SHA-1 хаш. Ова е низа од 40 карактери составена од хексадецимални карактери (0-9 и a-f) и пресметана врз основа на содржината на датотеката или структурата на директориуми во Git. Шапка SHA-1 изгледа вака:

24b9da6552252987aa493b52f8696cd6d3b00373

Ќе ги видите овие хеш вредности насекаде во Git бидејќи ги употребува толку многу. Всушност, Git чува сè во базата на податоци не со името на датотеката, туку со вредноста на хашот.

Git генерално само додава податоци

Кога правите дејства во Git, речиси сите од нив само add податоци во Git база на податоци. Тешко е да се добие системот да направи нешто што не е undoable или да го избрише податоци на било кој начин. Како и со било кој VCS, можете да изгубите или да ги замените промените што не сте ги направиле, но откако ќе направите снимка во Git, тешко е да се изгуби, особено ако редовно ја притиснете вашата база на податоци во друго складиште.

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

Трите состојби

Обрнете внимание сега - тука е главната работа што треба да се запомни за Git ако сакате остатокот од вашиот процес на учење да оди глатко. Git има три главни состојби дека вашите датотеки можат да се сместат во: committed, modified и staged:

  • Committed значи дека податоците се безбедно зачувани во вашата локална база на податоци.

  • Изменета значи дека сте ја смениле датотеката, но не сте ја извршиле во вашата база на податоци.

  • Изведена значи дека сте ја означиле изменетата датотека во нејзината моментална верзија за да отидете во вашата следна снимка за посетување.

Ова нè води до трите главни делови од проектот Git: директориумот Git, работното стебло и просторот.

Working tree, staging area, and Git directory.
Figure 6. Working tree, staging area, and Git directory.

Git директориумот е местото каде што Git ги зачувува метадата и објектната база на податоци за вашиот проект. Ова е најважниот дел од Git, и тоа е она што се копира кога clone складиштето од друг компјутер.

Работното дрво е единечна проверка на една верзија на проектот. Овие датотеки се извлекуваат од компресираната база на податоци во директориумот Git и се ставаат на диск за да можете да ги користите или промените.

Поставената област е датотека, генерално содржана во вашиот Git директориум, со што се чуваат информации за тоа што ќе одат во вашиот следен залог. Неговото техничко име во "Git" е "индекс", но фразата ‘` staging area '’ функционира исто така добро.

Основниот процес Git оди вака:

  1. Вие модифицирате датотеки во работното стебло.

  2. Вие селективно ги склопувате само оние промени кои сакате да бидете дел од вашата следна обврска, која додава only оние промени во местото каде што е поставено.

  3. Ќе направите залог, кој ги зема датотеките како што се во областа на стоп и го складира таа снимка трајно во вашиот Git директориум.

Ако одредена верзија на датотека е во директориумот Git, таа се смета за посветена. Доколку е модифицирано и е додадено во местото каде што е поставена, таа е изведена. И ако е изменета, бидејќи беше проверена, но не е изведена, таа е изменета. Во Основите на Git, ќе дознаете повеќе за овие држави и како можете или да ги искористите од нив или целосно да го прескокнете изведениот дел.с