Dasturlashni o’rganayotgan har bir kishi tez orada ikki so’zni eshitadi: Git va GitHub. Ish e’lonlarida ham “Git bilan ishlay olish” talabi deyarli doim uchraydi. Bu qo’llanmada versiyalarni boshqarish nima uchun kerakligini, Git va GitHub farqini, o’rnatish va sozlashni, asosiy tushunchalarni, birinchi repozitoriyni bosqichma-bosqich yaratishni, GitHub’ga yuklash va undan olishni, branch, Pull Request va konfliktlarni ko’rib chiqamiz. Keyin GitHub’ni portfolio sifatida ishlatish, xavfsizlik qoidalari va keng tarqalgan xatolarni tahlil qilamiz. Oxirida amaliy mashq va tekshiruv ro’yxati bor. Barcha buyruqlar haqiqiy — ularni terminalda o’zingiz sinab ko’rishingiz mumkin.
Versiyalarni boshqarish nima uchun kerak
Kompyuteringizda “kurs_ishi_yakuniy”, “kurs_ishi_yakuniy_v2”, “kurs_ishi_yakuniy_v2_eng_oxirgi” kabi fayllar bormi? Bu juda keng tarqalgan muammo: qaysi nusxa haqiqatan oxirgisi, ular orasida nima o’zgargani va kecha o’chirib yuborilgan abzats qayerda qolgani noma’lum. Fayllarni tartibga solish haqidagi maqolada bu muammoning oddiy yechimlarini ko’rgan edik. Kod va matnli loyihalar uchun esa undan kuchliroq vosita bor — versiyalarni boshqarish tizimi.
Versiyalarni boshqarish tizimi loyihangizning har bir saqlangan holatini eslab qoladi: kim, qachon, nimani va nima uchun o’zgartirgani yoziladi. Istalgan vaqtda oldingi holatga qaytish, ikki versiyani solishtirish yoki bir nechta odam bitta loyiha ustida bir-birining ishini buzmasdan ishlash mumkin bo’ladi.
Git va GitHub farqi
Bu ikki nom ko’pincha aralashtiriladi, lekin ular turli narsalar:
- Git — kompyuteringizga o’rnatiladigan bepul dastur. U internetsiz ham ishlaydi va loyiha tarixini sizning kompyuteringizda saqlaydi.
- GitHub — Git repozitoriylarini internetda saqlash va ular ustida birga ishlash uchun veb-xizmat. Unda kodni ko’rish, muhokama qilish, jamoa bilan ishlash va hatto oddiy saytni joylashtirish mumkin.
Oddiy o’xshatish: Git — bu kamera, GitHub esa suratlarni saqlaydigan va do’stlar bilan ulashadigan onlayn albom. Kamerasiz albom bo’sh, albomsiz esa suratlar faqat bitta qurilmada qoladi. GitHub yagona xizmat emas — GitLab va Bitbucket ham bor, lekin boshlovchilar uchun eng keng tarqalgani GitHub.
O’rnatish va boshlang’ich sozlash
Git’ni rasmiy saytdan — git-scm.com dan yuklab oling.
- Windows. O’rnatuvchini ishga tushiring; boshlovchi uchun standart sozlamalar yetarli. O’rnatishdan keyin Start menyusida Git Bash paydo bo’ladi — bu maqoladagi buyruqlarni aynan unda yozing.
- macOS. Terminalda
git --versionyozing. Git bo’lmasa, tizim kerakli vositalarni o’rnatishni taklif qiladi. - Linux (Ubuntu).
sudo apt install gitbuyrug’i bilan.
O’rnatilganini tekshiring va o’zingizni tanishtiring. Ism va email har bir commit’ga yoziladi, shuning uchun ularni bir marta to’g’ri sozlang:
git --version
git config --global user.name "Bekzod Karimov"
git config --global user.email "bekzod@example.com"
git config --global init.defaultBranch main
Oxirgi qator haqida izoh. Ilgari asosiy branch avtomatik ravishda master deb atalardi. Bugun GitHub va ko’pchilik loyihalar main nomini ishlatadi. Shu sozlama bilan yangi repozitoriylaringiz darhol main bilan boshlanadi. Eski qo’llanmalarda master ni ko’rsangiz, bu o’sha narsa, faqat eski nom.
Asosiy tushunchalar oddiy tilda
To’rtta tushunchani tushunsangiz, Git’ning qolgan qismi oson o’zlashtiriladi.
- Repozitoriy (repository, qisqasi repo) — loyiha papkasi va uning butun tarixi. Tashqaridan oddiy papka, lekin ichida yashirin
.gitpapkasi bor — tarix aynan shu yerda saqlanadi. Uni qo’lda o’chirmang. - Commit — loyihaning ma’lum paytdagi “surati” va unga yozilgan qisqa izoh. O’yindagi saqlash nuqtasiga o’xshaydi: xato qilsangiz, o’sha nuqtaga qaytasiz.
- Branch (tarmoq) — loyihaning parallel ish yo’li. Asosiy yo’l (
main) tegmay turadi, siz esa alohida branch’da yangi g’oyani sinab ko’rasiz. Natija yoqsa — asosiy yo’lga qo’shasiz, yoqmasa — tashlab yuborasiz. - Remote (masofaviy repozitoriy) — internetdagi nusxa, masalan GitHub’dagi repozitoriy. Odatda u
origindeb nomlanadi.
Yana bir muhim g’oya — tayyorlov maydoni (staging area). Git o’zgargan hamma narsani avtomatik saqlamaydi. Avval git add bilan qaysi o’zgarishlar keyingi commit’ga kirishini tanlaysiz, keyin git commit bilan suratga olasiz. Xuddi sumkaga narsalarni tanlab solib, keyin yopganingiz kabi.
Birinchi repozitoriy: bosqichma-bosqich
Bekzod — universitet talabasi, kurs ishini Markdown formatidagi matnli faylda yozmoqda. U har bir bobni yozib bo’lgach, holatni saqlab borishni xohlaydi. Uning yo’li bilan yuramiz.
1-qadam. Papka yaratish va repozitoriyni boshlash.
mkdir kurs-ishi
cd kurs-ishi
git init
git init papka ichida bo’sh repozitoriy yaratadi. Bu buyruq har bir loyiha uchun faqat bir marta beriladi.
2-qadam. Holatni ko’rish. Bekzod papkada hisobot.md faylini yaratib, kirish qismini yozadi. Keyin:
git status
git status — eng ko’p ishlatiladigan buyruq. U qaysi fayllar yangi, qaysilari o’zgargan va qaysilari commit’ga tayyorligini ko’rsatadi. Nima qilishni bilmay qolsangiz, avval shu buyruqni yozing.
3-qadam. O’zgarishni tayyorlash va commit qilish.
git add hisobot.md
git commit -m "Kirish qismini yozish"
Barcha o’zgargan fayllarni birdan qo’shish uchun git add . ishlatiladi (nuqta — joriy papka degani). Lekin undan oldin git status bilan nima qo’shilayotganini ko’rib oling.
4-qadam. Tarixni ko’rish.
git log --oneline
Har bir commit bitta qatorda ko’rinadi: qisqa kod (identifikator) va izoh. Oxirgi commit’dan keyin nima o’zgarganini ko’rish uchun git diff yoziladi.
Yaxshi commit xabari
Commit xabari — kelajakdagi o’zingizga yoki hamkasbingizga xat. “o’zgarishlar”, “tuzatdim” yoki “asdf” hech narsa demaydi. Yaxshi xabar:
- qisqa, taxminan 50 belgigacha;
- nima qilinganini aytadi: “2-bobga manbalar ro’yxatini qo’shish”;
- bitta mantiqiy o’zgarishni tasvirlaydi — ikki xil ish bo’lsa, ikkita commit qiling;
- jamoada bitta tilda va bitta uslubda yoziladi.
.gitignore fayli
Ba’zi fayllar repozitoriyga kirmasligi kerak: vaqtinchalik fayllar, tizim fayllari, kutubxona papkalari va eng muhimi — parol va maxfiy kalitlar. Ularni loyiha ildizidagi .gitignore fayliga yozasiz:
# .gitignore fayli namunasi
.env
node_modules/
*.log
.DS_Store
Thumbs.db
Diqqat: .gitignore faqat hali Git kuzatmayotgan fayllarga ta’sir qiladi. Agar fayl allaqachon commit qilingan bo’lsa, uni git rm --cached fayl_nomi bilan kuzatuvdan chiqarib, keyin commit qilish kerak.
GitHub bilan ishlash: push, clone, pull
Akkaunt va repozitoriy yaratish
- github.com saytida Sign up orqali ro’yxatdan o’ting. Foydalanuvchi nomini jiddiy tanlang — u kelajakda portfolio manzilingiz bo’ladi.
- O’ng yuqoridagi + belgisini bosib, New repository ni tanlang.
- Nom kiriting (masalan,
kurs-ishi), Public yoki Private ni tanlang. Kompyuterdagi repozitoriyni yuklamoqchi bo’lsangiz, “Add a README file” belgisini qo’ymang — repozitoriy bo’sh bo’lsin. - Create repository ni bosing. GitHub sizga repozitoriy manzilini ko’rsatadi.
Kompyuterni GitHub bilan bog’lash va yuklash
git remote add origin https://github.com/bekzod-karimov/kurs-ishi.git
git push -u origin main
git remote add internetdagi nusxani origin nomi bilan ro’yxatga oladi. git push commit’larni GitHub’ga yuboradi; -u esa bog’lanishni eslab qoladi, keyingi safar shunchaki git push yozish yetarli. Agar branch’ingiz hali master deb atalsa, avval git branch -M main bilan nomini o’zgartiring.
Kirish haqida: GitHub terminalda akkaunt parolini qabul qilmaydi. Windows’da Git bilan birga keladigan Git Credential Manager birinchi push paytida brauzer oynasini ochadi — o’sha yerda kirasiz. Boshqa tizimlarda parol o’rniga GitHub sozlamalarida yaratiladigan shaxsiy token (personal access token) yoki SSH kaliti ishlatiladi.
Boshqa kompyuterda ishlash: clone va pull
Bekzod universitet kompyuter xonasida ishlamoqchi. U repozitoriyni to’liq tarixi bilan yuklab oladi:
git clone https://github.com/bekzod-karimov/kurs-ishi.git
Ishni tugatgach, git add, git commit va git push qiladi. Uyga qaytgach, uy kompyuterida yangi o’zgarishlarni oladi:
git pull
Oltin qoida: ishni boshlashdan oldin git pull, tugatgandan keyin git push.
Branch, Pull Request va konfliktlar
Nilufar va Javlon kollej loyihasi uchun birgalikda kichik sayt qilmoqda. Nilufar “Biz haqimizda” sahifasini, Javlon esa aloqa formasini yozadi. Ikkalasi bitta main ustida ishlasa, bir-birining ishini buzib qo’yishi mumkin. Shuning uchun har biri o’z branch’ini ochadi.
Branch bilan ishlash
git switch -c biz-haqimizda
# fayllarni tahrirlash, keyin:
git add .
git commit -m "Biz haqimizda sahifasini qo'shish"
git switch main
git merge biz-haqimizda
git switch -c yangi branch yaratib, unga o’tadi. git switch main asosiy branch’ga qaytaradi, git merge esa branch’dagi o’zgarishlarni joriy branch’ga qo’shadi. Barcha branch’lar ro’yxatini git branch ko’rsatadi. Eski qo’llanmalarda git checkout -b uchraydi — u ham ishlaydi, lekin git switch tushunarliroq.
Pull Request g’oyasi
Jamoada branch’lar odatda kompyuterda emas, GitHub’da birlashtiriladi. Nilufar o’z branch’ini git push -u origin biz-haqimizda bilan yuklaydi va GitHub’da Compare & pull request tugmasini bosadi. Pull Request (PR) — “mening o’zgarishlarimni ko’rib chiqib, asosiy branch’ga qo’shinglar” degan so’rov. Javlon o’zgarishlarni qatorma-qator ko’radi, izoh qoldiradi, kerak bo’lsa tuzatish so’raydi. Hammasi joyida bo’lsa, Merge pull request bosiladi. Shunday qilib, main ga faqat ko’rib chiqilgan kod tushadi.
Konflikt va uni hal qilish
Ikkalasi bir faylning aynan bir qatorini turlicha o’zgartirsa, Git qaysi variant to’g’riligini o’zi hal qila olmaydi — bu konflikt deyiladi. Bu xato emas, oddiy holat. Masalan, ikkalasi ham index.html dagi sarlavhani o’zgartirgan. Birlashtirishda Git faylga belgilar qo’yadi:
<<<<<<< HEAD
<h1>Kollej loyihasi</h1>
=======
<h1>Bizning jamoa sayti</h1>
>>>>>>> biz-haqimizda
HEAD dan ======= gacha — joriy branch’dagi variant, undan pastda — qo’shilayotgan branch’dagi variant. Hal qilish tartibi:
- Faylni muharrirda oching va to’g’ri variantni qoldiring (yoki ikkalasini birlashtiring).
<<<<<<<,=======va>>>>>>>qatorlarini o’chiring.- Saqlang, keyin
git add index.htmlvagit commitqiling.
Konfliktlarni kamaytirish uchun tez-tez git pull qiling, branch’larni qisqa yashovchi qiling va kim qaysi fayl ustida ishlayotganini kelishib oling.
GitHub portfolio sifatida va xavfsizlik
README va GitHub Pages
Ish beruvchi ko’pincha rezyumedagi GitHub havolasini ochib ko’radi. Har bir loyihaga README.md fayl qo’shing: loyiha nima qiladi, qanday ishga tushiriladi, qaysi texnologiyalar ishlatilgan. Foydalanuvchi nomingiz bilan bir xil nomli repozitoriy yaratib, unga README qo’ysangiz, u profilingiz sahifasida chiqadi — bu sizning qisqa taqdimotingiz.
Madina HTML va CSS asoslarini o’rganib, o’zi haqida bitta sahifali sayt yasadi va uni internetga chiqarmoqchi. Buning uchun GitHub Pages — bepul xizmat:
index.htmlfaylini repozitoriy ildiziga qo’yib,git pushqiladi.- GitHub’da repozitoriyning Settings → Pages bo’limini ochadi.
- Build and deployment → Source da “Deploy from a branch” ni, Branch da
mainva/ (root)ni tanlab, Save bosadi. - Bir necha daqiqadan so’ng sayt
foydalanuvchi-nomi.github.io/repozitoriy-nomimanzilida ochiladi.
Shu havolani rezyume va LinkedIn profiliga qo’shish mumkin. Batafsil maslahatlar — portfolio yaratish haqidagi maqolada.
Xavfsizlik qoidalari
- Parol, token va maxfiy kalitlarni hech qachon repozitoriyga yuklamang. Ularni
.envkabi alohida faylda saqlang va.gitignorega qo’shing. - Yuklab qo’ygan bo’lsangiz — kalitni darhol almashtiring. Faylni keyingi commit’da o’chirish yetarli emas: u tarixda qoladi, ochiq repozitoriylarni esa avtomatik skanerlaydigan botlar bor.
- Ikki bosqichli himoyani yoqing: Settings → Password and authentication. GitHub o’zi ham kod yuklaydigan foydalanuvchilardan buni tobora ko’proq talab qilmoqda.
- Shaxsiy ma’lumotlarga ehtiyot bo’ling: pasport nusxasi, telefon raqamlari ro’yxati yoki boshqa odamlarning ma’lumotlari ochiq repozitoriyda bo’lmasin.
Umumiy qoidalar — onlayn xavfsizlik maqolasida.
Grafik vositalar
Terminal majburiy emas. GitHub Desktop — Windows va macOS uchun bepul dastur: commit, push, pull va branch tugmalar bilan bajariladi. VS Code muharririda chap paneldagi Source Control bo’limi o’zgarishlarni ko’rsatadi va commit qilish imkonini beradi. Shunga qaramay, asosiy buyruqlarni terminalda bir marta o’rganib olish foydali: grafik dasturlar aynan shu buyruqlarni bajaradi va muammo chiqqanda nima bo’layotganini tushunasiz.
Keng tarqalgan xatolar
- Hamma narsani bitta commit’ga yig’ish. Bir hafta ishlab, “hammasi” degan bitta commit qilish tarixni foydasiz qiladi. Har bir mantiqiy qadamdan keyin commit qiling.
- Maxfiy faylni yuklash.
.envyoki parolli faylnigit add .bilan tasodifan qo’shib yuborish. Commit’dan oldin doimgit statusni ko’ring. - Push qilmasdan kompyuterni almashtirish. Bekzod universitetda ishlab, push qilishni unutdi — uyda eski versiya kutib turibdi. Ishni tugatganda
git push, boshlagandagit pull. .gitpapkasini o’chirish yoki loyihani ichma-ich repozitoriylarga bo’lish. Butun tarix yo’qoladi yoki chalkashadi.- Konfliktdan qo’rqib, papkani qayta clone qilish. Konflikt belgilarini o’qib, qo’lda hal qilish ko’pincha bir daqiqalik ish.
- Tushunarsiz commit xabarlari. “fix”, “yangi”, “123” — bir oydan keyin o’zingiz ham tushunmaysiz.
Amaliy mashq va checklist
O’rganganlarni bir soatlik mashqda mustahkamlang:
- Git’ni o’rnating va
git configbilan ism va email’ni sozlang. mashqpapkasini yarating vagit initqiling.README.mdfaylida o’zingiz haqingizda 3–4 qator yozing va birinchi commit’ni qiling..gitignoreyaratib, unga.envni qo’shing..envfayl yaratib,git statusnatijasida u ko’rinmasligini tekshiring.- Yana ikki marta faylni o’zgartirib, aniq xabarli commit’lar qiling;
git log --onelinebilan tarixni ko’ring. - GitHub’da bo’sh repozitoriy yarating,
git remote addvagit push -u origin mainbilan yuklang. git switch -c tajribabilan branch oching, o’zgarish kiriting, commit qiling,mainga qaytibgit mergeqiling.- GitHub’da README’ni brauzerda tahrirlang, keyin kompyuterda
git pullqiling. - Xohlasangiz, oddiy
index.htmlqo’shib, GitHub Pages’ni yoqing.
Tekshiruv ro’yxati
- Git o’rnatilgan, ism va email sozlangan, asosiy branch —
main. - Commit’lar kichik, xabarlari aniq.
.gitignorebor, maxfiy fayllar repozitoriyda yo’q.- GitHub akkauntida ikki bosqichli himoya yoqilgan.
- Ish boshida
git pull, oxiridagit pushodatga aylangan. - Har bir ochiq loyihada tushunarli README bor.
Git — dasturchining kundalik vositasi, lekin u matnli hujjatlar, kurs ishlari va sayt loyihalari uchun ham foydali. Agar endi dasturlashni boshlash haqida o’ylayotgan bo’lsangiz, Git’ni birinchi kunlardanoq ishlatishni odat qiling.
Agar dasturlashni o’qituvchi bilan tizimli o’rganmoqchi bo’lsangiz, assotsiatsiyamizning bepul dasturlash dasturi va boshqa o’quv dasturlari bilan tanishing. Tayyor bo’lsangiz, ariza qoldiring — mutaxassislarimiz siz bilan bog’lanadi.