Git va GitHub nima?
Har qanday dasturchi ertami-kechmi kodini saqlash, o'zgarishlarini kuzatish va boshqalar bilan birgalikda ishlash muammosiga duch keladi. Aynan shu muammolarni Git nomli versiya nazorati tizimi va GitHub nomli bulutli platforma hal qiladi. Bu darsda ular nima ekanini, bir-biridan farqini va asosiy tushunchalarni oddiy tilda o'rganamiz.
Versiya nazorati (version control) nima?
Versiya nazorati tizimi (inglizcha Version Control System, qisqacha VCS) — bu fayllaringizdagi o'zgarishlarni vaqt bo'ylab kuzatib boruvchi va istalgan oldingi holatga qaytish imkonini beruvchi dasturdir. Oddiy qilib aytganda, u loyihangizning har bir muhim holatini suratga oladi va bularni saqlab qo'yadi.
Ko'pchilik yangi boshlovchilar VCS'siz ishlashga harakat qilib, fayllarni qo'lda nusxalaydi. Natijada papkalar quyidagi ko'rinishga keladi:
loyiha/
loyiha-yangi/
loyiha-yangi-2/
loyiha-oxirgi/
loyiha-oxirgi-ROSTDAN-oxirgi/
loyiha-ishlaydigan-versiya/
Bu yondashuv juda tez chalkashlikka olib keladi: qaysi papkada nima o'zgargani, qaysi biri ishlayotgani va nima uchun o'zgartirilgani hech kimga ma'lum bo'lmaydi. Versiya nazorati aynan shu muammoni yo'qotadi — barcha versiyalar bitta joyda, izohlar bilan, tartibli saqlanadi.
Versiya nazorati sizga quyidagilarni beradi:
- O'zgarishlar tarixi: kim, qachon va nima uchun kodni o'zgartirganini aniq ko'rasiz;
- Orqaga qaytish: biror narsani buzib qo'ysangiz, avvalgi ishlaydigan holatga bir buyruq bilan qaytishingiz mumkin;
- Jamoaviy ishlash: bir nechta dasturchi bitta loyihada bir-birini bezovta qilmasdan ishlashi mumkin;
- Tarmoqlar (branch): asosiy kodni buzmasdan, alohida joyda yangi imkoniyat ustida ishlash mumkin;
- Zaxira nusxa: kod bulutda saqlansa, kompyuteringiz buzilsa ham loyihangiz yo'qolmaydi.
Git nima?
Git — bugungi kunda dunyodagi eng mashhur versiya nazorati tizimi. Uni 2005-yilda Linux operatsion tizimining yaratuvchisi Linus Torvalds ishlab chiqqan. Git bepul, ochiq kodli va deyarli barcha operatsion tizimlarda ishlaydi.
Git — bu taqsimlangan (distributed) versiya nazorati tizimi. Bu shuni anglatadiki, loyihaning to'liq tarixi har bir dasturchining kompyuterida to'liq nusxa sifatida saqlanadi. Ya'ni Git ishlashi uchun internetga ulanish shart emas — buyruqlarning aksariyati mahalliy (lokal) bajariladi.
Git mahalliy dastur bo'lgani uchun quyidagilarni internetsiz qila olasiz:
- O'zgarishlaringizni commit qilish (saqlash nuqtasini yaratish);
- Butun o'zgarishlar tarixini ko'rish;
- Yangi tarmoq (branch) yaratish va tarmoqlar orasida almashish;
- Oldingi versiyalar bilan farqlarni solishtirish;
- Xato holatlarni oldingi commit'ga qaytarish.
GitHub nima?
GitHub — bu Git repozitoriylaringizni internetda (bulutda) saqlaydigan va jamoaviy ishlashni osonlashtiradigan onlayn platforma. U 2008-yilda ishga tushgan va hozirda dunyodagi eng katta dasturiy ta'minot manbasi (source code hosting) xizmatidir. 2018-yildan boshlab GitHub Microsoft kompaniyasiga tegishli.
GitHub'ni Git uchun bir ijtimoiy tarmoq deb tasavvur qilishingiz mumkin. U Git'ning barcha imkoniyatlariga qo'shimcha ravishda quyidagilarni beradi:
- Onlayn saqlash: kodingiz bulutda saqlanadi, istalgan joydan kirish mumkin;
- Hamkorlik: boshqalar bilan bitta loyihada birga ishlash, o'zgarishlarni ko'rib chiqish (code review);
- Pull request: o'zgartirishlarni asosiy kodga qo'shishdan oldin muhokama qilish mexanizmi;
- Issues: xato va vazifalarni kuzatib borish tizimi;
- GitHub Pages: saytlarni bepul joylashtirish (hosting) imkoniyati;
- Actions: testlash va joylashtirishni avtomatlashtirish (CI/CD).
GitHub, shuningdek, dasturchi uchun bir portfolio vazifasini ham bajaradi. Ish beruvchilar ko'pincha nomzodning GitHub sahifasidagi loyihalarga qarab uning tajribasini baholaydi.
Git va GitHub farqi
Bu ikki tushuncha eng ko'p chalkashtiriladigan mavzu, shuning uchun ularni aniq ajratib olaylik. Git — dastur (vosita), GitHub — shu vosita asosida qurilgan xizmat.
Git GitHub
------------------------- -------------------------
Vosita (dastur) Onlayn xizmat / platforma
Kompyuteringizga o'rnatiladi Brauzerda ochiladi (sayt)
Internetsiz ishlaydi Internet talab qiladi
Mahalliy (lokal) saqlaydi Bulutda saqlaydi
Bepul, ochiq kodli Bepul reja + pullik rejalar
Terminal buyruqlari Grafik interfeys + Git
Oddiy o'xshatish bilan aytadigan bo'lsak: Git — bu telefondagi rasm olish ilovasi, GitHub esa o'sha rasmlarni saqlaydigan va boshqalar bilan ulashadigan onlayn galereya (masalan, Google Photos'ga o'xshash). Git'siz GitHub deyarli foydasiz, ammo GitHub'siz Git'dan mahalliy ravishda bemalol foydalanish mumkin.
Asosiy tushunchalar: repozitoriy, commit, branch
Git bilan ishlashda tez-tez uchraydigan uchta muhim atama bor. Ularni hozir umumiy tanishtiramiz, keyingi darslarda esa har birini alohida chuqur o'rganamiz.
Repozitoriy (repo)
Repozitoriy (qisqacha repo) — bu loyihangiz uchun maxsus papka bo'lib, Git u yerdagi barcha fayllar va ularning to'liq o'zgarishlar tarixini kuzatib boradi. Texnik jihatdan repozitoriy — bu ichida yashirin .git papkasi bo'lgan oddiy loyiha papkasidir. Aynan shu .git papkasida Git barcha tarixni saqlaydi.
Repozitoriy ikki xil bo'ladi: mahalliy (kompyuteringizdagi) va masofaviy (GitHub'dagi). Odatda ular bir-biri bilan bog'lanadi va o'zgarishlar ular orasida almashtiriladi.
Commit
Commit — bu loyihangizning ma'lum bir vaqtdagi holatining surati (snapshot). Har bir commit'ga qisqa izoh (message) yozasiz, unda nima o'zgarganini tushuntirasiz. Commit'lar ketma-ket zanjir hosil qiladi va shu zanjir loyiha tarixini tashkil etadi.
Commit tarixi (yangidan eskiga):
(c4) "Kirish formasiga tekshiruv qo'shildi"
|
(c3) "Bosh sahifa dizayni yangilandi"
|
(c2) "README fayli qo'shildi"
|
(c1) "Loyiha yaratildi"
Har bir commit noyob identifikatorga (hash) ega bo'ladi va oldingi commit'ga bog'lanadi. Shu tufayli siz istalgan commit'ga qaytib, loyiha o'sha paytda qanday bo'lganini ko'rishingiz mumkin.
Branch (tarmoq)
Branch (o'zbekcha tarmoq) — bu commit'lar zanjirining alohida yo'nalishi. Tarmoqlar sizga asosiy kodni buzmasdan, alohida joyda ish qilish imkonini beradi. Masalan, yangi imkoniyat ustida ishlayotganda alohida tarmoq ochasiz; u tayyor bo'lgach, asosiy tarmoqqa qo'shasiz (birlashtirish — merge).
(yangi-dizayn tarmog'i)
o---o---o
/
o---o---o---o---o (main tarmog'i)
Standart holatda asosiy tarmoq main (avval master deb atalgan) deb nomlanadi. Amaliyotda dasturchilar har bir yangi vazifa uchun alohida tarmoq ochib, keyin uni asosiy tarmoqqa qo'shishadi.
Oddiy ish oqimi (workflow)
Git bilan kundalik ishlash odatda quyidagi bosqichlardan iborat. Buni umumiy tasavvur qilish uchun keltiryapmiz — batafsil buyruqlarni keyingi darslarda ko'ramiz:
1. Fayllarni tahrirlaysiz (kod yozasiz)
|
2. O'zgarishlarni tayyorlaysiz -> git add
|
3. Commit qilib saqlaysiz -> git commit
|
4. GitHub'ga yuborasiz -> git push
|
5. Boshqalarning o'zgarishlarini olasiz -> git pull
Bu oqim dastlab murakkab tuyulishi mumkin, ammo bir necha marta takrorlagandan keyin u avtomatik odatga aylanadi. Keyingi darslarda har bir bosqichni alohida-alohida, real misollar bilan o'rganamiz.
Muqobil xizmatlar: GitLab, Bitbucket va boshqalar
GitHub eng mashhur bo'lsa-da, u yagona variant emas. Git'ning o'zi ochiq standart bo'lgani uchun, ko'plab boshqa platformalar ham xuddi shu Git bilan ishlaydi:
- GitLab — GitHub'ga eng kuchli raqib. Uni o'z serveringizga o'rnatish (self-hosted) imkoniyati borligi bilan ajralib turadi. Ko'plab kompaniyalar ichki loyihalar uchun aynan GitLab'ni tanlaydi;
- Bitbucket — Atlassian kompaniyasiga tegishli. Jira va Trello kabi boshqa Atlassian mahsulotlari bilan yaxshi integratsiyalashadi;
- Gitea va Codeberg — yengil, ochiq kodli muqobillar, o'z serveringizda ishlatish uchun qulay;
- SourceHut — minimalist va tezkorlikka urg'u beruvchi platforma.
Muhim jihat shundaki, bu platformalarning barchasi bir xil Git vositasini ishlatadi. Ya'ni Git buyruqlarini bir marta o'rgansangiz, ularni GitHub'da ham, GitLab'da ham, Bitbucket'da ham bir xil ishlata olasiz. O'zgaradigan narsa — faqat platformaning veb-interfeysi va qo'shimcha imkoniyatlari.
Xulosa
- Versiya nazorati (VCS) — fayllardagi o'zgarishlarni vaqt bo'ylab kuzatuvchi va oldingi holatlarga qaytish imkonini beruvchi tizim;
- Git — kompyuterga o'rnatiladigan, internetsiz ishlaydigan, eng mashhur taqsimlangan versiya nazorati vositasi;
- GitHub — Git repozitoriylarini bulutda saqlaydigan va jamoaviy ishlashni ta'minlaydigan onlayn platforma;
- Git — vosita, GitHub — shu vosita asosidagi xizmat; ularni chalkashtirmaslik kerak;
- Repozitoriy — loyiha papkasi va uning tarixi; commit — loyihaning bir holati sur'ati; branch — commit'lar zanjirining alohida yo'nalishi;
- GitLab, Bitbucket va boshqa platformalar ham xuddi shu Git bilan ishlaydi — buyruqlar bir xil bo'ladi.