Commit — Git repository ichida saqlangan o‘zgarish nuqtasi. Commit loyiha kodining ma’lum bir vaqtdagi holatini yozib qo‘yadi va keyinchalik shu holatni ko‘rish, solishtirish yoki unga qaytish imkonini beradi.
Commit Git’dagi eng asosiy tushunchalardan biridir. Har bir commit loyiha tarixida alohida iz qoldiradi.
Vazifasi
Commit kod o‘zgarishlarini tartibli saqlash uchun ishlatiladi.
Commit quyidagi vazifalarni bajaradi:
- fayllardagi o‘zgarishlarni saqlash;
- loyiha tarixini yuritish;
- muayyan holatni belgilab qo‘yish;
- kod o‘zgarishlarini guruhlash;
- eski holatlarni ko‘rish;
- xatolik qaysi o‘zgarishda kiritilganini aniqlash;
- jamoa a’zolari ishini kuzatish;
- branchlar orasidagi farqlarni ko‘rish;
- release va deploy jarayonlariga asos yaratish.
Masalan, login sahifasi qo‘shilganda shu o‘zgarish alohida commit sifatida saqlanishi mumkin.
Commit qanday ishlaydi?
Git fayllardagi o‘zgarishlarni kuzatadi. Dasturchi kerakli o‘zgarishlarni staging area’ga qo‘shadi va commit yaratadi. Commit yaratilganda Git shu o‘zgarishlarni repository tarixiga yozadi.
Oddiy jarayon:
- fayl o‘zgartiriladi;
- o‘zgarish
git statusorqali ko‘riladi; - kerakli fayllar
git addbilan staging area’ga qo‘shiladi; git commitorqali commit yaratiladi;- commit Git tarixida saqlanadi.
Commit yaratilgandan keyin u Git tarixining bir qismiga aylanadi.
Commit tarkibi
Har bir commit ichida bir nechta muhim ma’lumotlar saqlanadi.
Commit tarkibida quyidagilar bo‘ladi:
- o‘zgargan fayllar;
- commit xabari;
- commit muallifi;
- commit yaratilgan vaqt;
- commit ID;
- oldingi commitga bog‘lanish;
- branch bilan bog‘liq ma’lumot;
- o‘zgarishlar farqi.
Bu ma’lumotlar Git’ga loyiha tarixini tartibli saqlashga yordam beradi.
Commit ID
Commit ID — har bir commitga beriladigan noyob identifikator. Git commitlarni hash qiymati orqali ajratadi.
Commit ID odatda uzun belgilar ketma-ketligidan iborat bo‘ladi.
Misol:
a3f5c91b8e2d4f0a9c7...
Ko‘pincha commit ID’ning qisqartirilgan ko‘rinishi ishlatiladi:
a3f5c91
Commit ID orqali ma’lum bir commitga murojaat qilish mumkin.
Commit message
Commit message — commit nima o‘zgartirganini tushuntiradigan qisqa matn.
Misollar:
Add login page;Fix navbar layout;Update user profile API;Remove unused CSS;Add product search filter.
Commit message loyiha tarixini o‘qishni osonlashtiradi. U commitning mazmunini qisqa va tushunarli ifodalaydi.
Staging area
Commit yaratishdan oldin o‘zgarishlar staging area’ga qo‘shiladi. Staging area commitga kiritiladigan o‘zgarishlarni vaqtincha tayyorlab turadi.
Jarayon:
- fayl o‘zgartiriladi;
- fayl staging area’ga qo‘shiladi;
- commit yaratiladi;
- staging area’dagi o‘zgarishlar commit ichiga yoziladi.
Bu mexanizm dasturchiga bitta commit ichiga aynan qaysi o‘zgarishlar kirishini nazorat qilish imkonini beradi.
Git add va commit
git add o‘zgarishlarni staging area’ga qo‘shadi. git commit esa staging area’dagi o‘zgarishlarni repository tarixiga saqlaydi.
Misol:
git add .
git commit -m "Add contact form"
Bu jarayonda barcha tayyorlangan o‘zgarishlar "Add contact form" xabari bilan commit qilinadi.
Git commit buyrug‘i
Commit yaratish uchun git commit buyrug‘i ishlatiladi.
Keng ishlatiladigan ko‘rinish:
git commit -m "Commit xabari"
Bu yerda -m commit message yozish uchun ishlatiladi.
Masalan:
git commit -m "Fix login validation"
Bu commit login validatsiyasidagi tuzatishni saqlaydi.
Working directory
Working directory — dasturchi hozir ishlayotgan loyiha papkasi. Fayllar avval working directory’da o‘zgartiriladi.
Working directory holatlari:
- fayl o‘zgarmagan;
- fayl o‘zgargan;
- yangi fayl yaratilgan;
- fayl o‘chirilgan;
- fayl staging area’ga qo‘shilgan;
- fayl commit qilingan.
Commit working directory’dagi barcha o‘zgarishlarni emas, faqat staging area’ga qo‘shilgan o‘zgarishlarni saqlaydi.
Commit tarixi
Repositorydagi barcha commitlar Git tarixini hosil qiladi. Commit tarixi orqali loyiha qanday rivojlanganini ko‘rish mumkin.
Commit tarixida quyidagilar ko‘rinadi:
- kim o‘zgartirish qilgan;
- qachon o‘zgartirish qilingan;
- qaysi fayllar o‘zgargan;
- commit xabari nima bo‘lgan;
- qaysi branchda commit qilingan;
- commitlar orasidagi bog‘lanish.
Commit tarixini ko‘rish uchun git log ishlatiladi.
Git log
git log — repository commitlar tarixini ko‘rsatadigan buyruq.
Misol:
git log
Bu buyruq quyidagi ma’lumotlarni chiqaradi:
- commit ID;
- muallif;
- sana;
- commit message.
Qisqa ko‘rinishda ko‘rish uchun quyidagi shakl ham ishlatiladi:
git log --oneline
Bu commitlarni ixcham ro‘yxat shaklida ko‘rsatadi.
Commit va branch
Commitlar branch ichida ketma-ket joylashadi. Har bir branch o‘z commitlar tarixiga ega bo‘lishi mumkin.
Masalan:
mainbranchda asosiy kod commitlari bo‘ladi;feature/loginbranchda login funksiyasi commitlari bo‘ladi;- feature tugagach, commitlar
mainbranchga merge qilinishi mumkin.
Branch aslida commitlar zanjiridagi ma’lum bir nuqtani ko‘rsatib turadi.
Commit va merge
Merge jarayonida bir branchdagi commitlar boshqa branchga qo‘shiladi. Ayrim holatlarda Git merge commit yaratadi.
Merge commit quyidagi holatlarda yuzaga keladi:
- ikki branch tarixi birlashtirilganda;
- Git o‘zgarishlarni alohida commit sifatida saqlaganda;
- feature branch asosiy branchga qo‘shilganda.
Merge commit branchlar birlashganini repository tarixida ko‘rsatadi.
Commit va pull request
Pull request ichida odatda bir yoki bir nechta commit bo‘ladi. Bu commitlar ma’lum o‘zgarishlar to‘plamini ifodalaydi.
Pull requestda commitlar orqali quyidagilar ko‘riladi:
- qaysi o‘zgarishlar qilingan;
- nechta commit bor;
- har bir commit nima vazifa bajargan;
- o‘zgarishlar qanday ketma-ketlikda yozilgan;
- code review qaysi o‘zgarishlarga tegishli.
Pull request merge qilinganda commitlar asosiy branchga qo‘shiladi.
Commit va diff
Diff — commitdagi o‘zgarishlar farqini ko‘rsatadi. Diff orqali qaysi qator qo‘shilgani, o‘chirilgani yoki o‘zgargani ko‘rinadi.
Commit diff quyidagilarni ko‘rsatadi:
- qo‘shilgan qatorlar;
- o‘chirilgan qatorlar;
- o‘zgargan fayllar;
- eski va yangi kod farqi;
- matn, konfiguratsiya yoki koddagi o‘zgarishlar.
GitHub’da har bir commitning diff ko‘rinishini web interfeys orqali ko‘rish mumkin.
Commit va revert
Revert — avvalgi commit ta’sirini bekor qiladigan yangi commit yaratish jarayoni.
Misol:
git revert commit_id
Revert eski commitni tarixdan o‘chirib tashlamaydi. U o‘sha commitdagi o‘zgarishlarga teskari o‘zgarish kiritadi va yangi commit yaratadi.
Revert repository tarixini saqlagan holda o‘zgarishni bekor qilish uchun ishlatiladi.
Commit va reset
Reset — Git tarixidagi holatni o‘zgartirish uchun ishlatiladi. Reset commitlar, staging area yoki working directory holatiga ta’sir qilishi mumkin.
Reset turlari:
--soft— commit bekor bo‘ladi, o‘zgarishlar staging area’da qoladi;--mixed— commit bekor bo‘ladi, o‘zgarishlar working directory’da qoladi;--hard— commit va o‘zgarishlar bekor qilinadi.
Reset Git tarixini o‘zgartirishi mumkin.
Commit va tag
Tag ma’lum bir commitga nom berish uchun ishlatiladi. Release versiyalar ko‘pincha commitga tag qo‘yish orqali belgilanadi.
Tag misollari:
v1.0.0;v1.2.3;beta;stable;release-2026-07.
Masalan, v1.0.0 tagi loyiha birinchi barqaror versiyasi qaysi commitda chiqqanini bildirishi mumkin.
Commit va HEAD
HEAD — Git’da joriy branchning hozirgi commitini ko‘rsatadigan maxsus ko‘rsatkich. Dasturchi qaysi branchda ishlayotgan bo‘lsa, HEAD odatda shu branchning oxirgi commitiga ishora qiladi.
HEAD quyidagi holatlarda ishlatiladi:
- oxirgi commitga murojaat qilish;
- eski commitga o‘tish;
- reset qilish;
- diff ko‘rish;
- Git tarixida harakatlanish.
Masalan, HEAD~1 oxirgi commitdan oldingi commitni bildiradi.
Atomic commit
Atomic commit — bitta aniq vazifaga tegishli kichik va mantiqiy commit. Bunday commitda bir-biriga aloqasiz ko‘p o‘zgarishlar aralashtirilmaydi.
Atomic commit misollari:
- faqat login validatsiyasini tuzatish;
- faqat navbar responsive muammosini hal qilish;
- faqat bitta API endpoint qo‘shish;
- faqat bitta typo tuzatish;
- faqat bitta component stylingini o‘zgartirish.
Atomic commitlar loyiha tarixini tushunarli qiladi.
Conventional commit
Conventional commit — commit message yozishning standartlashgan uslubi. Unda commit turi va qisqa tavsifi yoziladi.
Misollar:
feat: add login page;fix: resolve navbar overflow;docs: update README;style: format CSS file;refactor: simplify user service;test: add auth tests;chore: update dependencies.
Bunday format changelog, release note va avtomatik versiyalash jarayonlarida ishlatilishi mumkin.
Commit turlari
Commitlar mazmuniga qarab turli ko‘rinishda bo‘lishi mumkin.
Keng uchraydigan commit turlari:
- feature commit — yangi funksiya qo‘shadi;
- fix commit — xatolikni tuzatadi;
- refactor commit — kod tuzilmasini o‘zgartiradi;
- docs commit — dokumentatsiyani yangilaydi;
- style commit — kod formatini o‘zgartiradi;
- test commit — test qo‘shadi yoki yangilaydi;
- chore commit — yordamchi texnik o‘zgarishlarni bildiradi.
Commit turi o‘zgarish mazmunini tezroq tushunishga yordam beradi.
Commit va muallif
Har bir commit muallif ma’lumotiga ega bo‘ladi. Git commit yaratilganda foydalanuvchi nomi va email manzili yoziladi.
Commit muallifi quyidagilar orqali aniqlanadi:
GitHub kabi platformalarda commit muallifi foydalanuvchi profili bilan bog‘lanishi mumkin.
Commit va vaqt
Har bir commit yaratilgan vaqtga ega. Bu vaqt repository tarixida o‘zgarishlar qachon qilinganini ko‘rsatadi.
Commit vaqti quyidagilarda ishlatiladi:
- loyiha rivojlanish tarixini ko‘rish;
- bug qachon kiritilganini aniqlash;
- release vaqtini belgilash;
- jamoa faolligini ko‘rish;
- audit va tekshiruv jarayonlari.
Commit vaqti Git logda ko‘rinadi.
Commit va CI/CD
CI/CD jarayonlari ko‘pincha commit yoki push hodisasi bilan ishga tushadi. Masalan, repositoryga yangi commit push qilinganda avtomatik testlar bajarilishi mumkin.
Commit asosida CI/CD quyidagilarni bajarishi mumkin:
- testlarni ishga tushirish;
- lint tekshirish;
- build qilish;
- Docker image yaratish;
- deployment qilish;
- security scan bajarish;
- release tayyorlash.
GitHub Actions, GitLab CI va boshqa CI/CD tizimlari commitlarga bog‘langan holda ishlaydi.
Commit va code review
Code review jarayonida reviewerlar commitdagi o‘zgarishlarni tekshiradi. Ular qaysi fayllar o‘zgargani, kod qanday yozilgani va commitlar mantiqiy ajratilganini ko‘rishi mumkin.
Code review’da commit quyidagi maqsadlarda ko‘riladi:
- o‘zgarish sababini tushunish;
- kod sifati va xatolarni tekshirish;
- tarixni tartibli ko‘rish;
- pull request mazmunini baholash;
- har bir o‘zgarish bosqichini kuzatish.
Commitlar tartibli bo‘lsa, code review jarayoni ham tushunarli bo‘ladi.
Dasturlashdagi o‘rni
Commit dasturiy loyiha tarixini saqlaydigan asosiy Git elementi hisoblanadi. Har bir commit kod bazasining muayyan vaqtdagi holatini belgilaydi.
Commit quyidagi joylarda muhim rol o‘ynaydi:
- kod yozish jarayoni;
- jamoaviy ishlash;
- pull request;
- code review;
- release;
- rollback;
- bug tracking;
- CI/CD;
- open-source hissa qo‘shish;
- loyiha audit tarixi.
Commit Git repository ichidagi o‘zgarishlarni tartibli, kuzatiladigan va boshqariladigan holatda saqlaydi.
Bog‘liq tushunchalar
Git, GitHub, Repository, Branch, Pull request, Merge, Git log, Diff, Revert, Reset, Tag, CI/CD