GIT haqida qo'llanma.



Мундарижа:
1. Кириш
1.1. Талқинларни (версияларни) бошқариш ҳақида.
1.2. Git қисқача тарихи
1.3. Git асослари
1.4. Git ни ўрнатиш
1.5. Git да бошланғич созлашлар
1.6. Ёрдамни қандай олиш мумкин?
1.7. Хулосалар
2. Git асослари
2.1. Git сақлаш омборини яратиш
2.2. Ўзгаришларни омборга сақлаш
2.3. Фиксирлашлар тарихини кўриш
2.4. Ўзгаришларни бекор қилиш
2.5. Масофадан туриб омбор билан ишлаш
2.6. Белгилар билан ишлаш
2.7. Фойдали маслаҳатлар
2.8. Хулосалар
3. Git да тармоқланиш
3.1. Тармоқ нима?
3.2. Бирлаштириш ва тармоқлаш асослари
3.3. Тармоқларни бошқариш
3.4. Тармоқлар билан ишлаш усуллари
3.5. Масофадаги тармоқлар
3.6. Силжитиш
3.7. Хулосалар
4. Git серверда
4.1. Протоколлар (Қоидалар)
4.2. Git ни серверга ўрнатиш
4.3. SSH- очиқ калитни яратиш
4.4. Серверни созлаш
4.5. Очиқ ҳуқуқ
4.6. GitWeb сервер
4.7. Gitosis сервер
4.8. Gitolite сервер
4.9. Git – шайтон
4.10. Git – хостинг
4.11. Хулосалар
5. Тақсимланган Git
5.1. Тақсимланган иш жараёнлари
5.2. Проект (лойиҳа)ни фаоллаштириш
5.3. Лойиҳага йўл бошчилик қилиш
5.4. Хулосалар
5.5. Лойиҳани қўллаб қувватлаш
5.6. Хулосалар
6. Git ускуналари
6.1. Таҳрирларни танлаш
6.2. Интерактив индекслаш
6.3. Яшириш
6.4. Тарихга қайта ёзиш
6.5. Gitёрдамида хатоларни тузатиш
6.6. Қисм модуллар
6.7. Қисм дарахтларни бирлаштириш
6.8. Хулосалар
7. Git ни созлаш
7.1. Git ни параметрларини ўзгартириш
7.2. Git -атрибутлар
7.3. Git да тутқичлар
7.4. Git ёрдамида сиёсатни боғлашга мисол
7.5. Хулосалар
8. Git ва бошқа талқинларни бошқариш тизимлари
8.1. Git ва Subversion
8.2. Git да миграция
8.3. Хулосалар
9. Git ичкаридан
9.1. Сантехника ва чинни
9.2. Git да объектлар
9.3. Gitда мурожатлар
9.4. Pack - файллар
9.5. Мурожатларни махсуслаштириш
9.6. Жўнатиш протоколлари
9.7. Хизмат кўрсатиш ва маълумотларни қайта тиклаш
9.8. Хулосалар

1.1 Кириш – талқинларни бошқариш ҳақида.

Талқинларни бошқариш ҳақида.

Талқинларни бошқариш тизими нима ўзи ва нима учун у сизга керак? Талқинларни бошқариш тизими (ТБТ) – бу ўзгаришларни бир ёки бир нечта файлларда сақлаб сўнгра ана шу файллар асосида танланган эски талқинларни тиклаш имконини берувчи тизим. Ушбу китобда мисол тариқасида программа коди олинган бўлсада, лекин деярли ихтиёрий кенгайтмали файлар талқинини ушбу тизим ёрдамида бошқариш мумкин.
Агар сиз графиклар билан ишлайдиган мутахассис ёки веб-дизайнер бўлсангиз ва ҳар бир тасвир ёки макетнинг талқинини сақлашни хоҳласангиз у ҳолда талқинларни бошқариш тизимидан фойдаланиш хулосасига келиш айни муддао бўлади. У тизим файлларни аввалги ҳолатига қайтариш имконини беради, бутун бир лойиҳани (проектни) аввалги ҳолатга қайтара олади, аниқ бир вақтлар мобайнидаги ўзгаришларни солиштириш, хатолик юз берган модулни ким охири ўзгартирганлигини, ким муаммони келтириб чиқарган ва шу кабиларни кўриш имконини беради. Умуман айтганда агарда сиз ТБТ дан фойдаланган ҳолатда бирор файлни бузсангиз ёки йўқотиб қўйсангиз барчасини онсонгина тиклаш мумкин. Бундан ташқари ушбу ишларга жуда кам вақт сарф этилади.

Маҳаллий - талқинларни бошқариш тизимлари

Кўпчилик одамлар талқинлар билан ишлаш учун оддийгина қилиб файлларни нусхалашади (ақллилар яна жорий санани ҳам каталог номига қўшиб қўяди). Бундай ёндашув кенг тарқалган - сабаби онсон, лекин у ҳам кўп ноқулайликларга эга. Бу вазиятда хато қилиш онсон: масалан, хозир ўйлаган каталогдаги файлни ўзгартираябман дея адашиб бошқа файлни ўзгартириб қўйиш ёки шундай адашиш каби бир файлни иккинчи каталог ичига кўчириб керакли файл устидан ёзиб юбориш мумкин.
Бу муаммони ҳал қилиш мақсадида программачилар анча аввал керакли файлларда бўладиган барча ўзгаришларни сақлаш учун оддий маълумотлар омборига эга бўлган маҳаллий ТБТ ни ишлаб чиқишди (1-1 расмга қаранг).


1-1 расм. Маҳаллий ТБТ схемаси.
Ушбу турга тегишли бўлган таниқли ТБТ лардан биттаси rcs бўлиб, уни хозирги кунда ҳам жуда кўп компьютерларга ўрнатишади. Ҳаттоки замонавий операцион тизим Mac OS X да ҳам rcs утилита DeveloperTools билан биргаликда қўшиб ўрнатилади. Ушбу утилита дискда махсус форматда сақланувчи бир нечта ўзгаришлар орасидаги патчлар (патч-файл, файллар орасидаги ўзгаришларни изоҳлайди) билан ишлашга асосланган. Бу патчларни кетма-кет таҳлаб ихтиёрий файлларни ихтиёрий вақтда олдиндан яратиш имконини беради.

Талқинларни бошқарувчи марказлаштирилган тизимлар

(ТБМТ) Навбатдаги катта муаммо бошқа компьютерда яратувчилар билан бирга ишлаш зарурати эди. Уни ҳал қилиш учун талқинларни бошқарувчи марказлаштирилган тизимлар (ТБМТ) яратилди. Бундай тизимларда масалан CVS, Subversion ва Perforce ларда кузатув остидаги файллар сақланадиган ва бир қатор клиентларнинг ана шу файллардан нусхасини олиш имконини берадиган марказий сервер мавжуддир. бўлиб у унда В таких системах, например CVS, Subversion и Perforce, есть центральный сервер, на котором хранятся все отслеживаемые файлы, и ряд клиентов, которые получают копии файлов из него. Бу кўп йиллар давомида талқинларни бошқариш тизимининг стандарти бўлди (1-2 расмга қаранг).


Рисунок 1-2. Талқинларни марказдан бошқариш схемаси.
Бундай ёндашув кўп имкониятлар яратади, асосан маҳаллий ТБТ да ишлаганда бу янада сезиларли. Мисол учун лойиҳада ким нима билан шуғулланишини ҳамма билади. Администраторларда ким нима қила олишлигининг аниқ бошқаруви бор ва албатта ТБМТ ни администратор ҳуқуқида бошқариш ҳар бир клиентлар маҳаллий базаларини администратор ҳуқуқида бошқаришга нисбатан анча енгилдир.
Бироқ бундай ёндашувнинг жиддий ўз нуқсонлари мавжуд. Энг муҳими – марказлаштирилган сервер бутун тизимнинг ҳимояланмаган жойи ҳисобланади. Агар сервер бир соатга ўчиб қолса шу бир соат мобайнида дастур яратувчилар ўзаро маълумот алмашина олишмайди ва ҳеч ким янги талқинларни сақлай олмайди. Агарда марказлаштирилган тизим маълумотлар омбори жойлашган диск бузилса ва унинг нусхаси бўлмаса, сиз ҳамма нарса – барча лойиҳа тарихини йўқотасиз (фақат фойдаланувчилар машиналарида сақланиб қолган бир нечта талқинларгина сақланиб қолинади). Талқинларни бошқаришнинг маҳаллий тизимлари ҳам шундай камчиликка эга: агарда лойиҳанинг ҳамма тарихи битта жойда сақланса - сиз ҳаммасидан айрилиб қолишингиз мумкинлиги билиб таваккал қилган бўласиз.

Талқинларни бошқарувчи тақсимланган тизимлар

(ТБТТ) Бундай вазиятларда талқинларни бошқарувчи тақсимланган тизимлар(ТБТТ) ўйинга киради. Бундай Git, Mercurial, Bazaar ёки Darcs каби тизимлар мижозлари нафақат файлларнинг охирги талқинини балки бутун ҳамма омборни кўчириб олишади. Шунинг учун иш олиб борилаётган сервер “ўлган” ҳолатда омборни тиклаш мақсадида ихтиёрий мижоз омбори серверга юкланиб олиниши мумкин. Мижоз ҳар сафар файлларнинг янги талқинини кўчириб олганида барча маълумотларнинг янги нусхаси яратилади (1-3 расмга қаранг).

1-3 расм. Талқинларни бошқарувчи тақсимланган тизимлар схемаси
Бундан ташқари бундай тизимларнинг кўп қисмларида узоқ масофадаги бир нечта омборлар билан ишлаш мумкин, бу эса бир вақтнинг ўзида лойиҳага оид бўлган бир нечта гуруҳлар одамлари билан бошқа-бошқа иш олиб бориш имконини беради. Шу тариқа марказлаштирилган тизимларда мавжуд бўлмаган имкониятдан фойдаланиш яъни, битта лойиҳада бир вақтнинг ўзида бир нечта иш жараёнларини юритиш мумкин.

1.2 Кириш – Git нинг қисқача тарихи

Git нинг қисқача тарихи

Кўп бошқа ажойиб нарсалар каби Git номини яратилиши ва музокаралар орасида яратилди. Linux ядроси – ҳақиқатдан ҳам жуда катта очиқ лойиҳа. Мавжуд Linux ядроси кодларига ўзгаришлар (1991-2002) патчларни қабул қилиш ва талқинларни архивлаш орқали амалга оширилган. 2002 йилда лойиҳа ҳимояланган(патентланган, муаллифлик ҳуқуқи ҳимояланган, ўзганиинг мулки ҳисобланган) ТБТТ BitKeeper га ўтказилди.
2005 йилда Linux ядросини яратувчи жамоаси ва BitKeeper ни яратувчи компания орасидаги муносабат бузилди ва маҳсулотдан бепул фойдаланиш бекор қилинди. Бу Linux яратувчиларининг (ва шахсан Линукс асосчиси ЛинусТорвальдсни) BitKeeper дан фойдаланиш давомида оширган малакаларига асосланган ҳолда ўз тизимларини яратиши учун туртки бўлди. Янги тизим учун асосий талаблар қуйидагилар эди:
  • Тезлик
  • Дизайн соддалиги
  • Чизиқли бўлмаган дастурлашни қўллаши (мингдан ортиқ параллел тармоқлар)
  • Тўлиқ тақсимлаш
  • Linux ядроси каби катта лойиҳалар билан самарали ишлай олиш (ҳам тезлик жиҳатдан, ҳам маълумотлар ҳажми жиҳатдан)
Git ни 2005 туғилган йилидан бошлаб, у ишлатилиш вақтида ўзининг бошланғич хусусиятларини сақлаган ҳолда содда кўринишда қоладиган тарзда яратишди. У ҳақиқатдан ҳам тез, катта лойиҳалар учун жуда самарали шунингдек чизиқли бўлмаган ишлаб чиқаришларни ажойиб тармоқлантириш тизимига эга (3 бўлимга қаранг).

1.3 Кириш – Git асослари

Git асослари

Хўш Git бир оғиз сўз билан айтганда нима ўзи? Бу қисмни ўзлаштириш муҳим, агарда сиз, Git нима ва унинг ишлаш услублари қанақалигини тушунсангиз ундан самарали фойдаланишингизда сизга онсон бўлади. Git ни ўрганиш давомида бошқа Subversion ёки Perforce каби ТБТ лари ҳақида билганларингизни барчасини унутишга ҳаракат қилинг. Git да фойдаланувчи ойнаси бошқа ТБТ ларники каби бўлгани билан ундаги ахборотлар ва ахборот устидаги ишлар бошқа тизимлардагидек эмас. Бу фарқлар ҳақидаги билимингиз сизни Git билан ишлаш давомида адашишдан ҳимоялайди.

Нусхалар патчлар ўрнига

Git нинг бошқа ТБТ (масалан, Subversion ва унга ўхшаш) лардан асосий фарқи – бу Git нинг маълумотларга қандай қараши. Кўпчилик бошқа тизимлар ахборотларни файлларнинг ўзгариш(патч)лари рўйҳати кўринишида сақларди. Бундай тизимлар (CVS, Subversion, Perforce, Bazaar ва бошқалари) 1-4 расмда кўрсатилганидек ҳар бир файлга ўзгартириш киритиш вақтида сақланувчи маълумотларга файллар ва ўзгаришлар тўплами сифатида қарайди.

1-4 расм. Бошқа тизимлар маълумотларни ҳар бир файл учун асос талқинларининг ўзгариши кўринишида сақлайди.
Git ўз маълумотларини бундай кўринишда сақламайди. Бунинг ўрнига Git сақланувчи маълумотларни катта бўлмаган файллар тизимининг нусхалари тўплами сифатида қарайди. Ҳар сафар сиз лойиҳанинг жорий талқинини фиксирлаган вақтингизда Git айни вақтда лойиҳанинг барча файллар нусхаларини сақлайди. Самарадорликни ошириш мақсадида файл ўзгартирилмаган бўлса бундай файлларни нусхасини яратиш ўрнига аввалги сақланган нусхага тегишли йўлланмани яратади. Каждый раз, когда вы фиксируете текущую версию проекта, Git, по сути, сохраняет слепок того, как выглядят все файлы проекта на текущий момент. Ушбу жараён 1-5 расмда ифодаланган.

1-5 расм. Git маълумотларни маълум бир вақтдаги ҳолатларини нусхаси кўринишида сақлайди.
Бу Git ва деярли барча бошқа талқинларни бошқарувчи тизимлар орасидаги муҳим фарқдир. Шу туфайли Git ҳар бир талқинларни бошқариш тизимининг турли хил ёндашувларини кўриб чиқишга мажбур ва бу ҳислатни бошқа тизимлар ҳам Git дан олишган. Git оддий ТБТ дан кўра кўпроқ катта бўлмаган файллар тизимига ўхшайди. У бу тизим устидан ишлай оладиган кучли ускуналарига эга. 3 бўлимда Git да тармоқлар билан ишлаш мавзусига келганимизда биз маълумотларни бундай тушуниш қандай ютуқлар беришини билиб оламиз.

Деярли барча амаллар - маҳаллий

Кўп амалларни бажариш учун Git га фақат маҳаллий файл ва манбалар зарур, шунингдек одатда тармоқдаги ўзга компьютерлардаги маълумот ҳам керак эмас. Агар сиз тармоқдаги ушланиб қолишларга боғлиқ бўлган марказлаштирилган тизимлар билан ишлаган бўлсангиз Git ни ишлатиб анча ўзингизни енгил ҳис қилишингиз тайин. Сабаби лойиҳанинг бутун тарихи сизнинг маҳаллий дискингизда сақланади ва кўп амаллар бир зумда бажарилади.
Мисол учун тарихни кўрсатиш учун Git уни сервердан юклаб олмайди балки сизнинг маҳаллий омборингиздан ўқиб кўрсатади. Шунинг учун тарихни бир зумда кўришингиз мумкин. Агар сизга жорий ва бир ой олдинги талқинлар орасидаги ўзгаришни кўриш керак бўлса, ТБТ серверидан фарқни сўраш ёки ундан эски фални юклаб олиб кейин маҳаллий солиштиришни амалга ошириш ўрнига Git бир ой олдинги файлни (маҳаллий дискдан) олиб орасидаги фарқни шу жойнинг ўзида ҳисоблаб бера олади.
Бундан ташқари маҳаллий ишлаш тармоққа ёки VPN га ҳуқуқ бўлмаса ҳам анча иш қилиш мумкинлигини англатади. Агарда сиз самолётда ёки поездда бўлсангиз ва ишлашни хоҳласангиз бемалол ўзгаришларни сақлаб ва тармоққа уланиш имконияти пайдо бўлганидан кейин бу ўзгаришларни серверга жўнатишингиз мумкин бўлади. Агар сиз уйга келсангиз ва VPN мижоз дастури ишламаса барибир ишлашни давом эттиришингиз мумкин. Кўпчилик бошқа тизимларда бундай имконият йўқ ёки бўлсада қулай эмас. Масалан, Perforce ни ишлатган ҳолда серверга уланмасдан жуда ҳам кам ишларни қила оласиз. Subversion ва CVS лар билан ишлаб файлларни таҳрирлаш мумкин, лекин ўзгаришларни маълумотлар омборига сақлаш мумкин эмас(сабаби у омбордан узилган). Деярли ҳеч нарса эмасдек, бироқ сиз кейинчалик бу қанчалик ишга таъсир қилишининг гувоҳи бўласиз.

Git – маълумотларнинг бутунлигини таъминланишини кузатади

Git ихтиёрий файлларни сақлашдан олдин текширув йиғиндисини (контрольную сумму) ҳисоблаб чиқади ва бу файлнинг индекси бўлиб хизмат қилади. Шунинг учун файл ёки папка ичидагиларни Git билмайдиган тарзда ўзгартириб бўлмайди. Git нинг бу функцияси унинг асоси сифатида қурилган бўлиб, фалсафасининг муҳим ташкил этувчиларидан бири ҳисобланади. Агар маълумотлар узатиш вақтида ёки дискда бузилса Git бу ҳақда доим ҳабар беради.
Git нинг текширув йиғиндисини ҳисоблашда ишлатадиган механизми SHA-1 хеш дея аталади. Бу 40 та ўн олтилик саноқ системасидаги белгидан (0-9 ва a-f) иборат бўлган сатр SHA-1 хеш тахминан қуйидагича кўринишга эга:
24b9da6552252987aa493b52f8696cd6d3b00373
Git билан ишлаб хеш кенг ишлатилганилиги боис доимий равишда сиз унга дуч келасиз. Аслида ҳам Git ўз маълумотлар омборида файлларни номлари билан эмас балки уларнинг ташкил этувчилари билан яратилган хешларини сақлайди.

Git га маълумотлар тез-тез фақат қўшилиб туради

Git да сиз қилаётган амалдаги ҳамма ҳаракатлар фақат маълумотларни омборга қўшади. Тизимни маълумотларни ўчиришга мажбурлаш ёки тизимда бирор қайтариб бўлмайдиган ишни қилиш жуда қийин. Бошқа ТБТ лар каби сақланмаган маълумотларни йўқотиш мумкин, бироқ уларни фиксирланганидан кейин йўқотиб қўйиш жуда қийин бу янада қийин агарда сиз ўзгаришларни бошқа омборга жўнатиб турсангиз.
Шунинг учун Git ни ишлатиш – кўнгил тўқлик, чунки ниманидир бузиб қўйишдан чўчимасдан бемалол тажриба ўтказиш мумкин. Git маълумотларни қандай сақлаши ҳақида батафсилроқ ва йўқотилган туюлаётган маълумотларни тиклаш тўғрисидаги маълумотларни олиш учун 9 бўлимни ўқинг.

Уч ҳолат

Энди диққат. Бу кейинги ўрганишларингиз силлиқ кетиши учун Git ҳақида эсда сақлашингиз керак бўлганларидан энг муҳими. Git да файллар қуйидаги уч ҳолатдан бирида бўлиши мумкин: фиксирланган, ўзгартирилган ва тайёрланган. “Фиксирланган” файл сизнинг маҳаллий омборингизда сақланганлигини англатади. “Ўзгартирилган” файлларга ўзгартирилгану лекин фиксирланмаганлар киради. “Тайёрланган” файллар – бу ўзгартирилган файлларнинг навбатдаги жўнатишга (commit) ажратилганлари.
Шу тариқа Git ишлатилган лойиҳада уч қисм мавжуд: Git каталоги (Gitdirectory), ишчи каталог(workingdirectory) ва тайёрланган файллар соҳаси(stagingarea).


1-6 расм. Ишчи каталог, тайёрланган файллар соҳаси, Git каталоги.
Git каталоги – Git нинг сизнинг лойиҳангиз объектларининг метамаълумотларини ва маълумотлар омборини сақлайдиган жойи. Бу Git нинг муҳимроқ қисми, айнан у сиз бошқа компьютердан омборни клонлаштираётган вақтингизда нусхаланади.
Ишчи каталог – бу сиқилган маълумотлар омборидан маълум бир талқиннинг кенгайтирилган нусхаси. Ушбу файллар Git каталоги сиқилган маълумотлар омборидан олинади ва уларни сиз кўришингиз ва ўзгартиришингиз учун дискка кўчирилади.
Тайёрланган файлларнинг соҳаси — бу оддий файл, одатда Git каталогида сақланади ва у ўзида навбатдаги жўнатишга нималар кириши ҳақидаги маълумотни сақлайди. Баъзида уни index деб аташади, лекин охирги пайтларда уни тайёрланган файллар соҳаси (stagingarea) деб аташ стандартга айланиб бормоқда.
Git дан фойдаланган ҳолатдаги стандарт иш жараёни қуйидагича кўринишда:
1. Сиз ишчи каталогингизда файлларни ўзгартирасиз.
2. Сиз тайёрланган файллар соҳасига файлларни нусхасини қўшиб уларни тайёрлайсиз.
3. Сиз жўнатасиз. Бу пайтда нусхалар тайёрланган файллар соҳасидан Git каталогига сақланади.
Агар файлнинг ишчи талқини билан Git каталогидаги талқини мос келса файл фиксирланган ҳисобланади. Агар файл ўзгартирилган ва тайёрланган файллар соҳасига қўшилган бўлса у тайёрланган. Агарда файл маълумотлар омборидан юклаб олинганидан кейин ўзгартирилсаю ва тайёрланмаган бўлса у ҳолда у ўзгартирилган дейилади. 2 бўлимда сиз ушбу уч ҳолат ҳақида имкон қадар қандай ундан фойдаланиш ёки ушбу тайёргарликни ўтказиб юборишни батафсилроқ билиб олишингиз мумкин.

1.4 Кириш – Git ни ўрнатиш

Git ни ўрнатиш

Git ни ишлатиш ҳақида озгина бўлсада танишиш вақти келди. Биринчи навбатда сиз қилишингиз керак бўлган иш бу уни – ўрнатиш. Буни амалга оширишнинг бир қанча йўллари бор. Улардан икки асосийси – манбадан(исходника) ўрнатиш ва сизнинг қурилмавий – программа таъминотингизга мос йиғилган пакетдан ўрнатиш.

Манбадан ўрнатиш

Агар имконият бўлса қоидага асосан Git ни манба кодларидан ўрнатган яхши. Чунки сиз бу ҳолатда энг янги талқинга эга бўласиз. Git нинг ҳар бир янги талқини одатда ўз ичига фойдаланувчи интерфейсининг яхшиланган кодларини олади, шунинг учун охирги талқинни ўрнатиш яхши йўл ҳисобланади агарда сизга манбадан ўрнатиш қийинчиликлар туғдирмаса. Бундан ташқари кўпчилик Linux дистрибутивлари жуда эски пакетларни ўз ичига олишади. Шу боис агар сизда унчалик янги бўлмаган дистрибутив бўлса ёки эксперимент учун мўлжалланган ажримдаги пакетлардан фойдаланаётган бўлсангиз у ҳолда манбадан ўрнатиш сиз учун афзалли ечим бўлиши мумкин.
Git ни ўрнатиш учун у боғланган кутубхоналарни ўрнатиш керак бўлади: curl, zlib, openssl, expat ва libiconv. Масалан, агар сизнинг операцион тизимингизда пакетлар менежери – yum (Fedora), ёки apt-get (Debian, Ubuntu) бўлса у ҳолда сиз барча боғлиқликларга руҳсат бериш учун қуйидаги командалардан фойдаланишиниз мумкин:
$ yum install curl-devel expat-develgettext-devel \
openssl-develzlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
libz-devlibssl-dev
Барча зарур кутубхоналарни ўрнатгандан кейин Git сайтидан охирги талқинни юклаб олиб ишни давом эттириш мумкин:
http://git-scm.com/download
Энди компиляцияни амалга оширинг ва ўрнатинг:
$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
Бундан кейин сиз Git ўзидан Git ни янгилаш учун юклаб олишингиз мумкин.
$ git clone git://git.kernel.org/pub/scm/git/git.git

Linux га ўрнатиш

Агар Linux га Git ни бинар пакет каби ўрнатмоқчи бўлсангиз, буни сиз дистрибутивингиз оддий пакетлар менежеридан фойдаланиб амалга оширишингиз мумкин. Агар сизда Fedora бўлса yum дан фойдаланишингиз мумкин:
$ yum install git-core
Агар сизнинг дистрибутивингиз Debian га асосланган бўлса, масалан Ubuntu да apt-get ни ишлатиб кўринг:
$ apt-get install git-core

Mac га ўрнатиш

Mac га ўрнатишнинг иккита оддий йўли бор. Энг оддийи – Git нинг график ўрнатувчисини ишлатиш. Уни сиз GoogleCode саҳифасидан юклаб олишингиз мумкин: (1-7 расмга қаранг):
http://code.google.com/p/git-osx-installer


1-7 расм. Git нинг OS X га асосланган ўрнатувчиси.
Иккинчи кенг тарқалган усул – MacPorts орқали ўрнатиш (http://www.macports.org). Агар сизда MacPorts ўрнатилган бўлса у ҳолда Git ни қуйидагича ўрнатинг:
$ sudoportinstallgit-core +svn +doc +bash_completion +gitweb
Сизга барча қўшимчаларни ўрнатиш шарт эмас, бироқ агарда кейинчалик Git ни Subversion омборлари билан биргаликда ишлатишни хоҳлаб қолсангиз эҳтимол сизга +svn керак бўлиб қолар (8 бўлимга қаранг).

Windows га ўрнатиш

Git ни Windows га ўрнатиш жуда оддий. msysGit лойиҳасида ўрнатиш – энг содда процедуралардан бири. Фақат ўрнатувчи exe файлни GoogleCode саҳифасидан юклаб олинг ва уни ишга туширинг:
http://code.google.com/p/msysgit
Ўрнатиб бўлганингиздан кейин сизда консоль (SSH – клиентни ўз ичига олган, у кейинроқ керак бўлади) ва стандарт график талқинлари бўлади.

1.5 Кириш – Git да биринчи созлашлар

Git да биринчи созлашлар

Энди сизда Git ўрнатилганидан кейин сиз қандайдир созлашларни амалга оширишни хоҳласангиз буни бир марта қиласиз. Сабаби Git ни янгилаган вақтингизда ҳам ундаги созлашлар сақланиб қолади. Лекин сиз уларни ихтиёрий вақтда ўзоартиришингиз мумкин.
Git ташкил этувчиларига gitconfig ҳам кириб, у Git нинг ташқи кўринишини ва иш жараёнини барча турини бошқарувчи параметрларни кўриш ва ўзгартиришда хизмат қилади. Бу параметрлар учта жойда сақланиши мумкин:
  • /etc/gitconfig файли – у ўзида сизнинг тизимингиздаги барча фойдаланувчи ва уларнинг омборлари учун умумий бўлган қийматларни сақлайди. Агар сиз gitconfig ни ишга тушираётган вақтиингизда --system параметрини кўрсатсангиз у ҳолда параметрлар ана шу файлдан ўқилиб ва ана шу файлга сақланади.
  • ~/.gitconfig файл маълум бир фойдаланувчига тегишли бўлган созлашларни сақлайди. Ушбу файл --global параметри кўрсатилганда ишлатилади.
  • Айни вақтда сиз ишлаб турган омбордаги Git каталогидаги созловчи файл (.git/config) Бу параметрлар – фақат ана шу омбор учун. Ҳар бир ичкаридаги созлашлар ташқаридаги созлашларни ўрнини эгаллайди. Яъни .git/config файл /etc/gitconfig файлни ёпади.
WindowsGit оиласи тизимида .gitconfig файлини $HOME (C:\Documents and Settings\ $USER кўпчилик фойдаланувчилар учун) каталогидан қидиришади. Бундан ташқари Git, ўрнатувчини ишга туширган вақтингизда Git ни қаерга ўрнатишни кўрсатган бўлсангиз ана шу каталогдаги Msys каталогига нисбатан /etc/gitconfig файлини қидиради.

Фойдаланувчи номи

Ўрнатишни амалга оширганингиздан кейин сизни биринчи қилишингиз керак ишингиз – исмингизни ва электрон манзилингизни кўрсатиш. Бу маълумотлар ҳар бир жўнатилувчилар учун қўшилганлиги сабабли муҳим бўлиб, уни кейинчалик ўзгартириб бўлмайди:
$ gitconfig --global user.name "John Doe"
$ gitconfig --global user.email johndoe@example.com
Такрорлайман, ушбу ўзгаришларни бир марта қилиш керак. Агар сиз –global параметрини кўрсатсангиз Git бу маълумотларни ушбу тизимда нима иш қилсангиз барчасида ишлатади. Агар сиз маълум бир проектлар учун алоҳида исм ва электрон манзилларни кўрсатмоқчи бўлсаларингиз керакли лойиҳа каталогида командаларни --global параметрисиз бажариш етарли.

Таҳрирловчини танлаш

Сиз ўз исмингизни кўрсатдингиз энди Git да ишлаган вақтда бирор ҳабарни киритишда керак бўладиган матнли таҳрирловчини танлаш керак. Ўзгаришсиз ҳолатда Git сизнинг тизимингиздаги стандарт таҳрирловчини ишлатади, одатда бу Vi ёки Vim. Агар сиз бошқа таҳрирловчини ишлатмоқи бўлсангиз масалан, Emacs ни у ҳолда қуйидагини бажариш керак:
$ gitconfig --global core.editoremacs

Таққослаш утилитаси

Яна бошқа фойдали созлаш бу – diff утилита бўлиб, у бирлаштириш вақтидаги конфликтларга руҳсат беришни таъминлайди. Масалан, агар сиз vimdiff ни ишлатишни хоҳласангиз:
$ gitconfig --globalmerge.toolvimdiff
Git kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge ва opendiff лар ёрдамида бирлаштиришни амалга ошира олади, лекин сиз яна бошқа утилитани созлашингиз мумкин. Бу ҳақда батафсилроқ 7 бўлимда ёзилган.

Созлашларни текшириш

Агар сиз қўлланилаётган созлашларни текшириб кўрмоқчи бўлсангиз gitconfig --list командасидан фойдаланишингиз мумкин. Бу вақтда Git барча топа олган файлларни ичидагиларни кўрсатади:
$ gitconfig --list
user.name=Scott Chacon
user.email=schacon@gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
Созлашларда баъзи бир калитлар (номлар) бир неча марта такрорланиши мумкин. Сабаби айнан битта номли калитни у ҳар хил файллардан ўқийди(масалан /etc/gitconfig ва ~/.gitconfig дан). Бу ҳолатда Git ҳар бир калитнинг охирги учраганини ишлатади.
Шунингдек сиз қуйидаги командани бажариб аниқ бир калитни текширишингиз ҳам мумкин gitconfig {калит}:
$ gitconfig user.name
Scott Chacon

1.6 Кириш – Қандай ёрдам олиш мумкин?

Қандай ёрдам олиш мумкин?

Git ни ишлатаётган вақтингизда агар сизга ёрдам керак бўлса, керакли команда учун қўлланмани очишнинг учта йўли бор:
$ githelp<команда>
$ git<команда> --help
$ mangit-<команда>
Масалан, қуидаги ёрдамида config командаси учун қўлланмани очиш мумкин:
$ githelpconfig
Ушбу командалар яхшилиги шундаки, тармоққа уланиш имкони йўқ вақтда ҳам уларни ишлатиш мумкин. Агар сизга ушбу қўлланма ёрдами етарлича бўлмаса сиз уларни Freenode IRC (irc.freenode.net) сервер #git ва #github каналларидан қидириб кўришингиз мумкин. Одатда у ерда Git ни яхши биладиган ва сизга ёрдам бера оладиган юзлаб одамлар бўлишади.

1.7 Кириш - Хулосалар

Хулосалар

Энди сизда Git нима, унинг МТБТ лардан фарқлари ҳақида умумий тушунчалар бўлиши керак. Шунингдек сизда Git шахсий созламаларингиз билан биргаликда ўрнатилган бўлиши керак. Git ни асосларини ўрганадиган вақт етиб келди.

2 бўлим

Git асослари

Агар сиз фақат битта бўлимни ўқиб Git билан ишлашни бошламоқчи бўлсангиз у ҳолда бу бўлим айнан сиз учун. Бу ерда Git билан ишлаш жараёнида келиб чиқадиган кўпчилик муаммоларни ҳал қилиш учун керак бўладиган барча асосий командалар кўриб чиқилган. Бу бўлимни ўқиб чиққач сиз омборни созлаш ва қийматлашни, файлларнинг талқинларини бошқаришни бошлаш ва тугатишни, ўзгаришларни тайёрлаш ва фиксирлашни билиб оласиз. Биз шунингдек Git да алоҳида файл ёки уларнинг гуруҳларини қандай қилиб ташлаб кетишни, қандай қилиб тез ва оддийгина йўл билан нотўғри ўзгаришларни бекор қилишни, қандай қилиб лойиҳангиз ва алоҳида юборилганлар (commit) орасидаги тарихни кўришни, қандай қилиб узоқ масофадаги омборга(дан) ўзгаришларни қўшиш(push) (ва олиш(pull))ларни намойиш қилиб берамиз.

2.1 Git асослари - Git омборини яратиш

Git омборини яратиш

Git омборини яратиш учун иккита асосий ёндашув мавжуд. Биринчи ёндашув – мавжуд кталог ёки лойиҳани импорт қилиш. Иккинчиси – серверда мавжуд бўлган омборни клонлаштириш.

Мавжуд бўлган каталогда омборни яратиш

Агар сиз Git ни мавжд бўлган лойиҳа учун ишлатмоқчи бўлсангиз у ҳолда сизга лойиҳа каталогига ўтиб ва командалар сатрида қуйидагини териш зарур
$ git init
Ушбу команда жорий каталогда ўз ичига Git омборига асосланган – омбор учун керак бўладиган янги .git номли қисм каталогини яратади. Бу босқичда сизнинг лойиҳангиз ҳали – ҳамон талқинлар бошқарувида эмас. (9 бўлимда хозиргина яратилган ".git" каталог ичидаги файллар ҳақида батафсил ёзилган.)
Агар сиз талқинлар бошқарувига мавжуд бўлган файлни қўшмоқчи бўлсангиз сиз ушбу файларни индекслаб ва биринчи ўзгаришларни фиксирлашингизга тўғри келади. Буни амалга ошириш учун git add нинг индексланадиган файлларни кўрсатиб сўнгра юборишни (commit) кўрсатувчи бир қанча командаларидан фойдаланишингиз мумкин:
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
Биз ушбу командалар нима иш қилаётганини сал кейинроқ таҳлил этамиз. Айни вақтдаги босқичда файллар қўшилган ва бошланғич коммитли сизнинг Git омборингиз мавжуд.

Мавжуд омборни клонлаштириш

Агар сиз мавжуд бўлган омборни нусхасини олишни хоҳласангиз, масалан лойиҳани олишни хоҳласангиз, у ҳолда сизга git clone керак бўлади. Агар сиз Subversion каби бошқа талқинларни бошқариш тизими билан таниш бўлсангиз шунга эътибор берингки команда checkout эмас балки clone. Бу муҳим фарқ – Git амалда сервердаги барча маълумотлар нусхасини олади. git clone – бажарилганда ҳар бир файлнинг ҳар бир талқини сервердаги лойиҳа тарихидан олинади(pulled). Агар сервер диски ишдан чиқса сиз клиентлардаги ихтиёрий клонлардан фойдаланиб, серверни клонлаштириш вақтидаги ҳолатига қайтаришингиз мумкин бўлади (сиз сервернинг ушлаб олгичларининг қисмларини (server-side hooks) йўқотишингиз мумкин, лекин ҳаммасини эмас. Талқинлар бошқарувига қўшилганлари сақланиб қолади. Бу ҳақда 4 бўлимга қаранг.).
Омборни клонлаштириш git clone [url] командаси орқали амалага оширилади. Масалан, агар сиз Grit каби танилган Ruby Git кутубхонасини клонлаштирмоқчи бўлсангиз сиз уни қуйидаги кўринишда қилишингиз мумкин:
$ git clone git://github.com/schacon/grit.git
Ушбу буйруқ "grit" каталогини яратади, унинг ичидаги .git каталогида ўзгарувчилар яратиб қийматлайди (инициализациялайди), ушбу омбор учун барча маълумотларни юклаб олади ва ушбу омбор учун охирги талқинни яратади.