-
1. Иш бошланиши
- 1.1 Талқинларни бошқариш ҳақида
- 1.2 Git нинг қисқача тарихи
- 1.3 Git асоси
- 1.4 Командалар сатри
- 1.5 Git ни ўрнатиш
- 1.6 Git да биринчи созлашлар
- 1.7 Қандай ёрдам олиш мумкин?
- 1.8 Хулосалар
-
2. Git асослари
-
3. Git да тармоқланиш
-
4. Git серверда
- 4.1 The Protocols
- 4.2 Getting Git on a Server
- 4.3 Sizning SSH ochiq (public) kalitingizni generatsiyalash
- 4.4 Setting Up the Server
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Third Party Hosted Options
- 4.10 Хулосалар
-
5. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Qism modullar (Submodule)
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 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 Summary
-
A1. Appendix A: Git in Other Environments
- 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 Summary
-
A2. Appendix B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- 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.1 Иш бошланиши - Талқинларни бошқариш ҳақида
Ушбу бўлим Git ҳақида маълумот бериш билан бошланади. Биз бошланишида баъзи талқинларни бошқариш тизимлари ҳақида, сўнгра Git ни сизни тизимингизда қандай ишга тушириш ва охирида қандай созлаш, у билан ишлашни бошлаш ҳақида ёритганмиз. Ушбу бўлим охирида сиз Git нимани англатади, уни сиз нима учун ишлатишингиз мумкин ва қандай бошланғич созлашлар кераклигини билиб оласиз.
Талқинларни бошқариш ҳақида
"Талқинларни бошқариш тизими" нима ўзи ва нима учун у сизга керак? Талқинларни бошқариш тизими (ТБТ) – бу ўзгаришларни бир ёки бир нечта файлларда сақлаб сўнгра ана шу файллар асосида танланган эски талқинларни тиклаш имконини берувчи тизим. Ушбу китобда мисол тариқасида программа коди олинган бўлсада, лекин деярли ихтиёрий кенгайтмали файлар талқинини ушбу тизим ёрдамида бошқариш мумкин.
Агар сиз графиклар билан ишлайдиган мутахассис ёки веб-дизайнер бўлсангиз ва ҳар бир тасвир ёки макетнинг талқинини сақлашни хоҳласангиз, у ҳолда талқинларни бошқариш тизимидан фойдаланиш хулосасига келиш айни муддао бўлади. У тизим файлларни аввалги ҳолатига қайтариш имконини беради, бутун бир лойиҳани (проектни) аввалги ҳолатга қайтара олади, аниқ бир вақтлар мобайнидаги ўзгаришларни солиштириш, хатолик юз берган модулни ким охири ўзгартирганлигини, ким муаммони келтириб чиқарган ва шу кабиларни кўриш имконини беради. Умуман айтганда агарда сиз ТБТ дан фойдаланган ҳолатда бирор файлни бузсангиз ёки йўқотиб қўйсангиз барчасини онсонгина тиклаш мумкин. Бундан ташқари ушбу ишларга жуда кам вақт сарф этилади.
Маҳаллий - талқинларни бошқариш тизимлари
Кўпчилик одамлар талқинлар билан ишлаш учун оддийгина қилиб файлларни нусхалашади (ақллилар яна жорий санани ҳам каталог номига қўшиб қўяди). Бундай ёндашув кенг тарқалганлигининг сабаби, унинг онсонлигидир, лекин, у ҳам кўп ноқулайликларга эга. Бу вазиятда хато қилиш онсон: масалан, хозир ўйлаган каталогдаги файлни ўзгартираябман дея адашиб, бошқа файлни ўзгартириб қўйиш ёки шундай адашиш каби бир файлни иккинчи каталог ичига кўчириб керакли файл устидан ёзиб юбориш мумкин.
Бу муаммони ҳал қилиш мақсадида, дастурчилар анча аввал керакли файлларда бўладиган барча ўзгаришларни сақлаш учун оддий маълумотлар омборига эга бўлган маҳаллий ТБТ ни ишлаб чиқишди.
![Маҳаллий талқинларни бошқариш тизими тасвири](png/local.png)
Ушбу турга тегишли бўлган таниқли ТБТ лардан биттаси RCS бўлиб, уни хозирги кунда ҳам жуда кўп компьютерларга ўрнатишади.
Ҳаттоки замонавий операцион тизим Mac OS X да ҳам rcs
дастгоҳ DeveloperTools билан биргаликда қўшиб ўрнатилади.
Ушбу дастгоҳ дискда махсус форматда сақланувчи бир нечта ўзгаришлар орасидаги патчлар (патч-файл, файллар орасидаги ўзгаришларни изоҳлайди) билан ишлашга асосланган. Бу патчларни кетма-кет таҳлаб ихтиёрий файлларни ихтиёрий вақтда олдиндан яратиш имконини беради.
Талқинларни бошқарувчи марказлаштирилган тизимлар (ТБМТ)
Навбатдаги жиддий муаммо бошқа компьютерда яратувчилар билан бирга ишлаш зарурати эди. Уни ҳал қилиш учун талқинларни бошқарувчи марказлаштирилган тизимлар (ТБМТ) яратилди. Бундай тизимларда масалан CVS, Subversion ва Perforce ларда кузатув остидаги файллар сақланадиган ва бир қатор мижозларнинг ана шу файллардан нусхасини олиш имконини берадиган марказий сервер мавжуддир. Бундай тизимлар ёндашуви кўп йиллар давомида талқинларни бошқариш тизимининг стандарти бўлди .
![Талқинларни бошқарувчи марказлаштирилган тизимлар](png/centralized.png)
Бундай ёндашув кўп имкониятлар яратади, асосан маҳаллий ТБТ да ишлаганда бу янада сезиларли. Мисол учун лойиҳада ким нима билан шуғулланишини ҳамма билади. Администраторларда ким нима қила олишлигининг аниқ бошқаруви бор ва албатта ТБМТ ни администратор ҳуқуқида бошқариш ҳар бир клиентлар маҳаллий базаларини администратор ҳуқуқида бошқаришга нисбатан анча енгилдир.
Бироқ бундай ёндашувнинг жиддий ўз нуқсонлари мавжуд. Энг муҳими – марказлаштирилган сервер бутун тизимнинг ҳимояланмаган жойи ҳисобланади. Агар сервер бир соатга ўчиб қолса шу бир соат мобайнида дастур яратувчилар ўзаро маълумот алмашина олишмайди ва ҳеч ким янги талқинларни сақлай олмайди. Агарда марказлаштирилган тизим маълумотлар омбори жойлашган диск бузилса ва унинг нусхаси бўлмаса, сиз ҳамма нарса – барча лойиҳа тарихини йўқотасиз (фақат фойдаланувчилар машиналарида сақланиб қолган бир нечта талқинларгина сақланиб қолинади). Талқинларни бошқаришнинг маҳаллий тизимлари ҳам шундай камчиликка эга: агарда лойиҳанинг ҳамма тарихи битта жойда сақланса - сиз ҳаммасидан айрилиб қолишингиз мумкинлигини билиб таваккал қилган бўласиз.
Талқинларни бошқарувчи тақсимланган тизимлар (ТБТТ)
Бундай вазиятларда талқинларни бошқарувчи тақсимланган тизимлар (ТБТТ) ўйинга киради. Шу турдаги Git, Mercurial, Bazaar ёки Darcs каби тизимлар мижозлари нафақат файлларнинг охирги талқинини балки бутун ҳамма омборни кўчириб олишади. Шунинг учун иш олиб борилаётган сервер “ўлган” ҳолатда омборни тиклаш мақсадида ихтиёрий мижоз омбори серверга юкланиб олиниши мумкин. Мижоз ҳар сафар файлларнинг янги талқинини кўчириб олганида барча маълумотларнинг янги нусхаси яратилади.
![Талқинларни бошқарувчи тақсимланган тизимлар](png/distributed.png)
Бундан ташқари бундай тизимларнинг кўп қисмларида узоқ масофадаги бир нечта омборлар билан ишлаш мумкин, бу эса бир вақтнинг ўзида лойиҳага оид бўлган бир нечта гуруҳлар одамлари билан бошқа-бошқа иш олиб бориш имконини беради. Шу тариқа марказлаштирилган тизимларда мавжуд бўлмаган имкониятдан фойдаланиш яъни, битта лойиҳада бир вақтнинг ўзида бир нечта иш жараёнларини юритиш мумкин.