Git asosiy buyruqlari
Endi Git bilan haqiqiy ish boshlaymiz. Bu darsda kundalik amaliyotda eng ko'p ishlatiladigan buyruqlarni โ repozitoriy yaratishdan tortib o'zgarishlarni saqlashgacha โ real misollar bilan bosqichma-bosqich o'rganamiz. Har bir buyruqni yozib, natijasini ko'rib chiqamiz.
Git'ning uch bo'limi: ishchi katalog, staging, repozitoriy
Git'ni tushunish uchun uning uch asosiy hududini bilish shart. Bir fayl ushbu bo'limlar orasida harakatlanadi:
- Ishchi katalog (working directory): haqiqiy fayllaringiz joylashgan papka โ siz tahrirlayotgan joy;
- Staging (indeks, sahna): keyingi commit'ga tayyorlangan o'zgarishlar to'plami. Bu "vaqtincha savat" kabi โ nimani saqlashni shu yerda tanlaysiz;
- Repozitoriy (.git): commit qilingan o'zgarishlar doimiy saqlanadigan tarix.
Ishchi katalog Staging Repozitoriy
(tahrirlayotgan) -> (tayyorlangan) -> (saqlangan tarix)
add commit
Ya'ni fayl avval git add bilan staging'ga qo'yiladi, so'ng git commit bilan repozitoriyga doimiy yoziladi. Bu ikki bosqichli tizim sizga aynan nimani saqlashni aniq nazorat qilish imkonini beradi.
add qilib, faqat ularni commit qilasiz.git init โ repozitoriy yaratish
Har qanday papkani Git repozitoriysiga aylantirish uchun git init buyrug'i ishlatiladi. Avval loyiha papkangizga o'ting, so'ng buyruqni bajaring:
mkdir mening-loyiham
cd mening-loyiham
git init
Bu yerda mkdir yangi papka yaratadi, cd o'sha papkaga kiradi, git init esa uni repozitoriyga aylantiradi. Muvaffaqiyatli bajarilsa, quyidagiga o'xshash xabar chiqadi:
Initialized empty Git repository in /home/ali/mening-loyiham/.git/
Aslida git init qiladigan yagona ish โ papka ichida yashirin .git nomli katalog yaratish. Aynan shu katalogda Git barcha tarixni saqlaydi. Uni o'chirsangiz, papka oddiy papkaga aylanadi (fayllar qoladi, lekin tarix yo'qoladi).
git initni uy papkangizda yoki noto'g'ri joyda tasodifan bajarmang. Uni faqat aniq loyiha papkangiz ichida ishga tushiring, aks holda butun kompyuteringizni kuzatishga urinib, chalkashlik yuzaga keladi.git status โ hozirgi holatni ko'rish
git status โ Git bilan ishlashda eng ko'p ishlatiladigan buyruq. U hozirgi holatni ko'rsatadi: qaysi fayllar o'zgargan, qaysilari staging'da, qaysilari hali kuzatilmayapti. Har bir amaldan oldin va keyin uni ishlatish yaxshi odat.
git status
Yangi, bo'sh repozitoriyda natija shunday bo'ladi:
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Endi papkaga bitta fayl qo'shaylik va holatni yana ko'raylik:
echo "# Mening loyiham" > README.md
git status
Bu safar Git yangi faylni kuzatilmayotgan (untracked) deb ko'rsatadi:
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present
git add qilish kerak. Git chiqarayotgan xabarlar odatda keyingi qadamni ham aytib beradi โ ularni o'qish foydali.git add โ o'zgarishlarni staging'ga qo'shish
git add fayllarni ishchi katalogdan staging'ga ko'chiradi โ ya'ni ularni keyingi commit uchun tayyorlaydi. Bitta faylni qo'shish uchun uning nomini yozing:
git add README.md
Endi git status faylni yashil rangda, staging'ga qo'shilgan ("changes to be committed") holida ko'rsatadi:
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
Bir nechta faylni birga qo'shish uchun ularni ketma-ket yozish yoki barchasini nuqta (.) bilan qo'shish mumkin:
git add fayl1.txt fayl2.txt
# yoki barcha o'zgargan fayllarni birdan:
git add .
Bu yerda git add . โ joriy papka va uning barcha ostki papkalaridagi o'zgargan/yangi fayllarni bir vaqtda staging'ga qo'shadi. Bu eng ko'p ishlatiladigan shakl.
git add . qulay, lekin ehtiyot bo'ling โ u hamma narsani qo'shadi. Muhim bo'lmagan yoki maxfiy fayllar (masalan parollar) tasodifan qo'shilmasligi uchun .gitignore faylidan foydalaning va vaqti-vaqti bilan git statusni tekshiring.git commit โ o'zgarishlarni saqlash
Staging'dagi o'zgarishlarni doimiy tarixga yozish uchun git commit ishlatiladi. Har bir commit'ga qisqa izoh (message) yozish shart โ u nima o'zgarganini tushuntiradi. Izohni -m bayrog'i bilan beriladi:
git commit -m "Birinchi commit: README qo'shildi"
Muvaffaqiyatli bajarilgach, Git commit haqida qisqa ma'lumot chiqaradi:
[main (root-commit) a1b2c3d] Birinchi commit: README qo'shildi
1 file changed, 1 insertion(+)
create mode 100644 README.md
Bu yerda:
mainโ commit qilingan tarmoq nomi;a1b2c3dโ commit'ning noyob identifikatori (hash) boshlanishi;1 file changed, 1 insertion(+)โ o'zgarishlar statistikasi (1 fayl, 1 qator qo'shildi).
-m bayrog'isiz git commit yozsangiz, Git izoh yozishingiz uchun matn muharririni ochadi. Agar bilmagan muharrir (masalan Vim) ochilib qolsa, chiqib ketolmay qolishingiz mumkin. Yangi boshlovchilar uchun har doim -m "izoh" shaklini ishlatish osonroq.Yaxshi commit izohi qisqa, aniq va o'zgarish nimani qilishini tushuntiradigan bo'lishi kerak. Yomon va yaxshi misollar:
# Yomon (ma'nosiz):
git commit -m "o'zgarish"
git commit -m "tuzatish"
# Yaxshi (aniq):
git commit -m "Kirish formasiga email tekshiruvi qo'shildi"
git commit -m "Bosh sahifadagi sarlavha xatosi tuzatildi"
git log โ commit tarixini ko'rish
Qilingan barcha commit'larni ko'rish uchun git log ishlatiladi. U eng yangi commit'dan boshlab, har birining hash'i, muallifi, sanasi va izohini ko'rsatadi:
git log
commit a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Author: Ali Valiyev <ali@example.com>
Date: Tue Jul 1 10:30:00 2026 +0500
Birinchi commit: README qo'shildi
To'liq log ba'zan juda uzun bo'ladi. Uni ixchamroq, bir qatorli ko'rinishda ko'rish uchun --oneline bayrog'ini qo'shing:
git log --oneline
c4d5e6f Bosh sahifa dizayni yangilandi
b2c3d4e README fayli yangilandi
a1b2c3d Birinchi commit: README qo'shildi
Bu ko'rinishda har commit qisqa hash va izoh bilan bir qatorga sig'adi โ tarixni tez ko'zdan kechirish uchun juda qulay. Yana bir foydali variant โ commit'lar va tarmoqlarni grafik ko'rinishda chiqarish:
git log --oneline --graph --all
git log ochilganda ekran ba'zan "to'xtab" qoladi (pager rejimi). Undan chiqish uchun q (quit) harfini bosing. Yuqoriga-pastga strelka tugmalari bilan yurish mumkin.Faylni o'zgartirish oqimi (to'liq misol)
Endi barcha buyruqlarni birga, real ish oqimi ko'rinishida ko'raylik. Aytaylik, mavjud README.md faylini o'zgartiramiz:
# 1. Faylni o'zgartiramiz (yangi qator qo'shamiz)
echo "Bu loyiha Git o'rganish uchun." >> README.md
# 2. Holatni tekshiramiz
git status
# 3. O'zgarishni staging'ga qo'yamiz
git add README.md
# 4. Commit qilamiz
git commit -m "README'ga loyiha tavsifi qo'shildi"
# 5. Tarixni ko'ramiz
git log --oneline
2-qadamdagi git status bu safar faylni o'zgartirilgan (modified) deb ko'rsatadi โ chunki fayl yangi emas, avval commit qilingan, endi tahrirlangan:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: README.md
git add orqali staging'ga qo'shiladi โ jarayon bir xil.git diff โ farqlarni ko'rish
git diff fayllardagi aniq nima o'zgarganini qator-qatorlab ko'rsatadi. Bu commit qilishdan oldin "men nima o'zgartirdim?" degan savolga javob beradi. Staging'ga qo'yilmagan o'zgarishlarni ko'rish uchun:
git diff
Natijada qo'shilgan qatorlar + bilan, o'chirilgan qatorlar esa - bilan ko'rsatiladi:
diff --git a/README.md b/README.md
index 1a2b3c4..5d6e7f8 100644
--- a/README.md
+++ b/README.md
@@ -1,1 +1,2 @@
# Mening loyiham
+Bu loyiha Git o'rganish uchun.
Agar o'zgarishlarni allaqachon git add bilan staging'ga qo'ygan bo'lsangiz, oddiy git diff hech nima ko'rsatmaydi. Staging'dagi (commit'ga tayyorlangan) farqlarni ko'rish uchun --staged bayrog'ini qo'shing:
git diff --staged
Amaliyotdagi tartib odatda shunday: avval git diff bilan o'zgarishlarni ko'rib chiqasiz, so'ng ishonch hosil qilib, git add va git commit qilasiz.
git diff yoki git statusni ko'rib chiqishni odat qiling. Bu tasodifan kerakmas o'zgarish yoki maxfiy ma'lumotni saqlab qo'yishning oldini oladi.Kundalik buyruqlar tartibi (qisqa eslatma)
Yuqoridagi barcha buyruqlarni bitta ketma-ketlikda jamlaymiz โ bu Git bilan har kungi ishning asosiy takrorlanadigan sikli:
git status # nima o'zgarganini ko'rish
git diff # aniq farqlarni ko'rish
git add . # o'zgarishlarni tayyorlash
git commit -m "izoh" # saqlash
git log --oneline # tarixni tekshirish
Xulosa
- Git uch hududdan iborat: ishchi katalog, staging (tayyorlangan o'zgarishlar) va repozitoriy (saqlangan tarix);
git initpapkani repozitoriyga aylantiradi (yashirin.gitkatalogini yaratadi);git statushozirgi holatni ko'rsatadi โ eng ko'p ishlatiladigan tekshiruv buyrug'i;git add faylyokigit add .o'zgarishlarni staging'ga qo'yadi;git commit -m "izoh"o'zgarishlarni doimiy tarixga aniq izoh bilan saqlaydi;git logtarixni,git log --onelineesa uni ixcham ko'rinishda ko'rsatadi;git diffstaging'ga qo'yilmagan,git diff --stagedesa tayyorlangan farqlarni ko'rsatadi;- Kundalik sikl:
status→diff→add→commit→log.