-
1. Почеток
- 1.1 За верзиска контрола
- 1.2 Кратка историја на Git
- 1.3 Основи на Гит
- 1.4 Командната линија
- 1.5 Инсталирање на Git
- 1.6 First-Time Git Setup
- 1.7 Getting Help
- 1.8 Заклучок
-
2. Основите на Git
-
3. Гранење во Git
- 3.1 Гранење објаснето
- 3.2 Основно разгранување и спојување
- 3.3 Branch Management
- 3.4 Работни процеси
- 3.5 Далечински гранки
- 3.6 Ребаза
- 3.7 Заклучок
-
4. Git на Сервер
- 4.1 Протоколите
- 4.2 Добивање на Git на сервер
- 4.3 Генерирање на вашиот SSH јавен клуч
- 4.4 Поставување на серверот
- 4.5 Гит демон
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опции за домаќини на трети лица
- 4.10 Заклучок
-
5. Дистрибуиран Git
- 5.1 Дистрибуирани работни процеси
- 5.2 Придонес кон проект
- 5.3 Приватен мал тим
- 5.4 Одржување на проект
- 5.5 Заклучок
-
6. GitHub
-
7. Git Алатки
- 7.1 Revision Selection
- 7.2 Интерактивно стажирање
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Напредно спојување
- 7.9 Rerere
- 7.10 Дебагирање со Git
- 7.11 Submodules
- 7.12 Збивање
- 7.13 Заменување
- 7.14 Складирање на ингеренции
- 7.15 Заклучок
-
8. Персонализација на Git
- 8.1 Git Configuration
- 8.2 Git Атрибути
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Заклучок
-
9. Git и други системи
- 9.1 Git како Клиент
- 9.2 Мигрирање кон Git
- 9.3 Заклучок
-
10. Внатрешноста на Git
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Заклучок
-
A1. Appendix A: Git во други околини
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Заклучок
-
A2. Appendix B: Вметнување на Git во вашите апликации
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Appendix C: Git команди
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
1.3 Почеток - Основи на Гит
Основи на Гит
Значи, што е Гит на кратко? Ова е важен детал, бидејќи ако разберете што е Git и основите на функционирање, тогаш ефикасното користењето на Git веројатно ќе ви биде многу полесно. Додека го изучувате Git, обидете се да го исчистите вашиот ум за работите што можеби ги знаете за други VCS, како што се CVS, Subversion или Perforce - тоа ќе ви помогне да избегнете неразбирање додека го користите. Иако корисничкиот интерфејс на Git е прилично сличен со овие други VCS, Git складира и размислува за информации на многу поинаков начин, а разбирањето на овие разлики ќе ви помогне да избегнете да бидете збунети додека го користите.
Слики, не разлики
Главната разлика помеѓу Git и кој било друг VCS (Subversion и пријателите) е начинот на кој Git размислува за своите податоци. Концептуално, повеќето други системи ги зачувуваат информациите како листа на промени на база на датотеки. Овие други системи (CVS, Subversion, Perforce, Bazaar, и така натаму) мислат на информациите што ги чуваат како збир на датотеки и промените направени за секоја датотека со текот на времето (ова обично се опишува како контрола на верзијата базирана на делта).
Зачувување на податоците како промени во базната верзија на секоја датотека. Git не ги мисли или ги складира своите податоци на овој начин. Наместо тоа, Git повеќе ги разгледува своите податоци како серија фотографии од минијатурен датотечен систем. Со Git, секој пат кога ќе го извршите, или ја зачувате состојбата на вашиот проект, Git во основа зема слика за тоа како изгледаат сите ваши датотеки во тој момент и зачувува референца за таа слика. За да биде ефикасен, ако датотеките не се сменија, Git не ја зачувува датотеката повторно, туку само линк до претходната идентична датотека што веќе е зачувана. 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, работното стебло и просторот.
Git директориумот е местото каде што Git ги зачувува метадата и објектната база на податоци за вашиот проект. Ова е најважниот дел од Git, и тоа е она што се копира кога clone складиштето од друг компјутер.
Работното дрво е единечна проверка на една верзија на проектот. Овие датотеки се извлекуваат од компресираната база на податоци во директориумот Git и се ставаат на диск за да можете да ги користите или промените.
Поставената област е датотека, генерално содржана во вашиот Git директориум, со што се чуваат информации за тоа што ќе одат во вашиот следен залог. Неговото техничко име во "Git" е "индекс", но фразата ‘` staging area '’ функционира исто така добро.
Основниот процес Git оди вака:
-
Вие модифицирате датотеки во работното стебло.
-
Вие селективно ги склопувате само оние промени кои сакате да бидете дел од вашата следна обврска, која додава only оние промени во местото каде што е поставено.
-
Ќе направите залог, кој ги зема датотеките како што се во областа на стоп и го складира таа снимка трајно во вашиот Git директориум.
Ако одредена верзија на датотека е во директориумот Git, таа се смета за посветена. Доколку е модифицирано и е додадено во местото каде што е поставена, таа е изведена. И ако е изменета, бидејќи беше проверена, но не е изведена, таа е изменета. Во Основите на Git, ќе дознаете повеќе за овие држави и како можете или да ги искористите од нив или целосно да го прескокнете изведениот дел.с