Git — dastur kodidagi o‘zgarishlarni kuzatish, saqlash va boshqarish uchun ishlatiladigan version control tizimi. Git yordamida dasturchilar kodning turli versiyalarini saqlaydi, eski holatga qaytadi, jamoa bilan bir loyihada ishlaydi va o‘zgarishlar tarixini nazorat qiladi.
Git ko‘pincha dasturlash loyihalarida ishlatiladi. U frontend, backend, mobile, DevOps, open-source va boshqa ko‘plab IT yo‘nalishlarida muhim vosita hisoblanadi.
Vazifasi
Git kod va fayllar tarixini boshqarish uchun ishlatiladi.
Git quyidagi vazifalarni bajaradi:
- kod o‘zgarishlarini saqlash;
- loyiha tarixini yuritish;
- eski versiyalarga qaytish;
- branchlar orqali alohida ishlash;
- jamoa bilan bir loyihada ishlash;
- o‘zgarishlarni solishtirish;
- xatolik kiritilgan joyni aniqlash;
- kodni masofaviy repositoryga yuborish;
- boshqa dasturchilar o‘zgarishlarini olish.
Masalan, dasturchi yangi funksiya yozadi, Git orqali uni commit qiladi va keyin kerak bo‘lsa bu o‘zgarishni ko‘ra oladi yoki eski holatga qayta oladi.
Git qanday ishlaydi?
Git loyiha papkasidagi fayllar o‘zgarishini kuzatadi. Har bir muhim o‘zgarish commit sifatida saqlanadi. Commit loyiha tarixidagi alohida nuqta hisoblanadi.
Oddiy jarayon:
- loyiha papkasida Git ishga tushiriladi;
- fayllar o‘zgartiriladi;
- o‘zgarishlar staging area’ga qo‘shiladi;
- commit yaratiladi;
- commit tarixda saqlanadi;
- kerak bo‘lsa remote repositoryga yuboriladi.
Git har bir commit orqali loyiha qanday o‘zgarganini yozib boradi.
Repository
Repository — Git orqali boshqariladigan loyiha ombori. Repository ichida loyiha fayllari va Git tarixi saqlanadi.
Repository ikki turda bo‘lishi mumkin:
- Local repository — dasturchining kompyuteridagi repository;
- Remote repository — GitHub, GitLab yoki boshqa serverda joylashgan repository.
Local repository’da dasturchi o‘zgarishlarni qiladi va commit yaratadi. Remote repository esa jamoa bilan kod almashish uchun ishlatiladi.
Git init
git init — oddiy papkani Git repositoryga aylantirish uchun ishlatiladigan buyruq.
Misol:
git init
Bu buyruq papka ichida Git uchun kerakli yashirin .git katalogini yaratadi. Shu katalogda commitlar, branchlar va loyiha tarixi haqidagi ma’lumotlar saqlanadi.
Git status
git status — repository holatini ko‘rsatadigan buyruq.
Bu buyruq orqali quyidagilarni ko‘rish mumkin:
- qaysi fayllar o‘zgargan;
- qaysi fayllar staging area’da;
- qaysi fayllar hali Git tomonidan kuzatilmayapti;
- branch holati;
- commit qilishga tayyor o‘zgarishlar.
Misol:
git status
Git status dasturchiga hozirgi ishchi holatni tushunishga yordam beradi.
Staging area
Staging area — commitga kiritiladigan o‘zgarishlar vaqtincha tayyorlanadigan joy. Git’da har bir o‘zgargan fayl darhol commitga kirmaydi. Avval kerakli fayllar staging area’ga qo‘shiladi.
Staging area quyidagi maqsadlarda ishlatiladi:
- faqat kerakli fayllarni commitga qo‘shish;
- o‘zgarishlarni guruhlash;
- bitta katta o‘zgarishni bir nechta commitga ajratish;
- commit tarkibini nazorat qilish.
Fayl staging area’ga git add orqali qo‘shiladi.
Git add
git add — o‘zgargan fayllarni staging area’ga qo‘shish uchun ishlatiladi.
Misollar:
git add index.html
git add .
Birinchi buyruq faqat index.html faylini qo‘shadi. Ikkinchi buyruq esa joriy papkadagi barcha o‘zgarishlarni staging area’ga qo‘shadi.
Commit
Commit — Git tarixidagi saqlangan o‘zgarish nuqtasi. Har bir commit o‘zgarishlar to‘plamini, muallifni, vaqtni va commit xabarini o‘z ichiga oladi.
Commit yaratish buyrug‘i:
git commit -m "Login sahifasi qo‘shildi"
Commit quyidagi ma’lumotlarni saqlaydi:
Commitlar loyiha tarixini bosqichma-bosqich saqlab boradi.
Commit message
Commit message — commit nima o‘zgartirganini tushuntiradigan qisqa matn.
Misollar:
Add user login form;Fix navbar responsive issue;Update API error handling;Remove unused CSS;Add product search endpoint.
Commit message loyiha tarixini tushunarli qiladi. Jamoaviy loyihalarda commit xabarlari kod o‘zgarishlarini kuzatishda muhim bo‘ladi.
Branch
Branch — Git’da alohida ish yo‘nalishi. Branch orqali asosiy kodga ta’sir qilmasdan yangi funksiya, tuzatish yoki tajriba ustida ishlash mumkin.
Branch ishlatiladigan holatlar:
- yangi feature yaratish;
- bug fix qilish;
- tajriba kod yozish;
- release tayyorlash;
- hotfix qilish;
- jamoa a’zolarining alohida ishlashi.
Masalan, main asosiy branch bo‘lsa, yangi login funksiyasi uchun feature/login branch yaratilishi mumkin.
Git branch
git branch — branchlar bilan ishlash uchun ishlatiladigan buyruq.
Misollar:
git branch
git branch feature/login
Birinchi buyruq mavjud branchlarni ko‘rsatadi. Ikkinchi buyruq yangi feature/login branch yaratadi.
Git checkout
git checkout — branchlar orasida o‘tish yoki fayllarni eski holatga qaytarish uchun ishlatiladigan buyruq.
Misol:
git checkout feature/login
Bu buyruq feature/login branchiga o‘tadi.
Yangi Git versiyalarida branchga o‘tish uchun git switch buyrug‘i ham ishlatiladi.
Git switch
git switch — branchlar orasida o‘tish uchun ishlatiladigan buyruq.
Misollar:
git switch main
git switch -c feature/profile
Birinchi buyruq main branchiga o‘tadi. Ikkinchi buyruq esa yangi feature/profile branch yaratadi va unga o‘tadi.
Merge
Merge — bir branchdagi o‘zgarishlarni boshqa branchga qo‘shish jarayoni.
Masalan, feature/login branchida login funksiyasi tayyor bo‘lsa, u main branchga merge qilinishi mumkin.
Merge jarayoni:
- kerakli branchga o‘tiladi;
- boshqa branchdagi o‘zgarishlar qo‘shiladi;
- Git tarixni birlashtiradi;
- kerak bo‘lsa conflict hal qilinadi;
- yakuniy commit hosil bo‘ladi.
Merge jamoaviy ishlashda branchlarni birlashtirish uchun asosiy mexanizmlardan biridir.
Conflict
Conflict — Git bir xil faylning bir xil joyidagi o‘zgarishlarni avtomatik birlashtira olmagan holat. Bu ko‘pincha ikki dasturchi bitta joyni turlicha o‘zgartirganda yuz beradi.
Conflict quyidagi holatlarda chiqishi mumkin:
- merge jarayonida;
- pull jarayonida;
- rebase vaqtida;
- bir xil qatorlar turlicha o‘zgartirilganda;
- fayl bir branchda o‘chirilib, boshqasida tahrirlanganda.
Conflict bo‘lgan fayllarda Git maxsus belgilar qo‘yadi. Dasturchi kerakli variantni tanlab, faylni to‘g‘rilaydi.
Git log
git log — commitlar tarixini ko‘rsatadigan buyruq.
Misol:
git log
Git log orqali quyidagilarni ko‘rish mumkin:
Loyiha tarixi, kim nima o‘zgartirgani va qachon o‘zgarganini ko‘rish uchun ishlatiladi.
Git diff
git diff — fayllardagi o‘zgarishlarni solishtirish uchun ishlatiladi.
Misol:
git diff
Bu buyruq oxirgi commitdan keyingi o‘zgarishlarni ko‘rsatadi.
Git diff quyidagi holatlarda ishlatiladi:
- commitdan oldin o‘zgarishlarni tekshirish;
- ikki branchni solishtirish;
- ikki commit farqini ko‘rish;
- fayldagi aniq o‘zgarishlarni ko‘rish.
Remote
Remote — local repository bilan bog‘langan masofaviy repository manzili. Remote orqali local kod GitHub, GitLab yoki boshqa Git server bilan sinxronlanadi.
Keng ishlatiladigan remote nomi:
origin
Remote quyidagi vazifalarda ishlatiladi:
- kodni serverga yuborish;
- boshqa dasturchilar kodini olish;
- branchlarni masofada saqlash;
- jamoaviy repository bilan ishlash.
Remote repository GitHub yoki GitLab’da joylashgan bo‘lishi mumkin.
Git clone
git clone — masofaviy repository’ni kompyuterga yuklab olish uchun ishlatiladi.
Misol:
git clone https://github.com/user/project.git
Bu buyruq remote repository nusxasini local kompyuterga ko‘chiradi va Git tarixini ham olib keladi.
Git push
git push — local commitlarni remote repositoryga yuborish uchun ishlatiladi.
Misol:
git push origin main
Bu buyruq local main branchdagi commitlarni remote origin repositoryga yuboradi.
Push jamoa bilan kod almashish va o‘zgarishlarni serverda saqlash uchun ishlatiladi.
Git pull
git pull — remote repositorydagi yangi o‘zgarishlarni local repositoryga olish uchun ishlatiladi.
Misol:
git pull origin main
Bu buyruq remote main branchdagi o‘zgarishlarni local branchga olib keladi va birlashtiradi.
Pull odatda jamoa a’zolarining yangi commitlarini olish uchun ishlatiladi.
Git fetch
git fetch — remote repositorydagi yangi ma’lumotlarni local Git’ga olib keladi, lekin ishchi branchga avtomatik qo‘shmaydi.
Misol:
git fetch origin
Fetch orqali remote branchlar, commitlar va yangilanishlar haqida ma’lumot olinadi. Keyin ularni merge yoki rebase qilish mumkin.
Git reset
git reset — commit, staging area yoki working directory holatini o‘zgartirish uchun ishlatiladi.
Reset turlari:
--soft— commitni bekor qiladi, o‘zgarishlar staging area’da qoladi;--mixed— staging area tozalanadi, o‘zgarishlar working directory’da qoladi;--hard— commit va o‘zgarishlarni butunlay bekor qiladi.
Misol:
git reset --hard HEAD
Bu buyruq ehtiyotkorlik talab qiladigan amal hisoblanadi, chunki o‘zgarishlarni yo‘qotishi mumkin.
Git revert
git revert — oldingi commit ta’sirini bekor qiladigan yangi commit yaratadi.
Misol:
git revert commit_id
Revert mavjud tarixni o‘zgartirmaydi. U eski commitga qarama-qarshi o‘zgarish kiritadi va yangi commit sifatida saqlaydi.
Jamoaviy repositorylarda revert tarixni xavfsiz saqlagan holda o‘zgarishlarni bekor qilish uchun ishlatiladi.
Git stash
git stash — hozirgi tugallanmagan o‘zgarishlarni vaqtincha saqlab qo‘yish uchun ishlatiladi.
Misollar:
git stash
git stash pop
Stash quyidagi holatlarda ishlatiladi:
- branch almashtirish kerak bo‘lganda;
- hozirgi ishni vaqtincha chetga olishda;
- pull qilishdan oldin o‘zgarishlarni saqlashda;
- tezkor bug fix qilish kerak bo‘lganda.
git stash pop saqlangan o‘zgarishlarni qayta tiklaydi.
.gitignore
.gitignore — Git kuzatmasligi kerak bo‘lgan fayl va papkalar ro‘yxatini saqlaydigan fayl.
.gitignore ichida odatda quyidagilar bo‘ladi:
- dependency papkalari;
- build fayllar;
- environment fayllar;
- log fayllar;
- cache fayllar;
- local sozlamalar;
- IDE konfiguratsiyalari;
- maxfiy kalitlar.
Misollar:
node_modules/
.env
__pycache__/
.gitignore keraksiz yoki maxfiy fayllar repositoryga qo‘shilib ketmasligi uchun ishlatiladi.
Git va GitHub farqi
Git va GitHub bir xil narsa emas.
- Git — version control tizimi;
- GitHub — Git repositorylarni internetda saqlash va jamoa bilan ishlash platformasi;
- Git local kompyuterda ham ishlaydi;
- GitHub remote repository, pull request, issue va code review imkoniyatlarini beradi.
Masalan, dasturchi Git orqali commit yaratadi, GitHub orqali esa shu commitlarni jamoa bilan almashadi.
Dasturlashdagi o‘rni
Git dasturlash jarayonining asosiy vositalaridan biridir. U kod tarixini saqlash, jamoaviy ishlash va o‘zgarishlarni boshqarishda ishlatiladi.
Git quyidagi joylarda qo‘llanadi:
- frontend loyihalar;
- backend loyihalar;
- mobile ilovalar;
- DevOps konfiguratsiyalar;
- dokumentatsiya;
- open-source loyihalar;
- CI/CD jarayonlari;
- production deploy;
- release boshqaruvi;
- code review.
Git dasturiy ta’minot ishlab chiqish jarayonida kod tarixi va jamoaviy ishni boshqaradigan muhim tizim hisoblanadi.
Bog‘liq tushunchalar
GitHub, Repository, Commit, Branch, Pull request, Merge, Version control, CI/CD, DevOps, Deployment, Code review, Open-source