GIT and Github
September 4

Git asoslari

Git — bu versiyalarni boshqarish tizimi. U dasturchilarga koddagi o‘zgarishlarni kuzatishga, bir loyihada birgalikda ishlashga va fayllarning turli versiyalarini boshqarishga yordam beradi.

Asosiy jihatlari:

  1. Versiyani kuzatish – Loyihada qilgan har bir o‘zgarishni xabar bilan saqlab qo‘yish mumkin, keyin xohlagan vaqtda eski versiyaga qaytish mumkin.
  2. Hamkorlik – Bir nechta dasturchi bir xil kod ustida ishlashi mumkin, va ular bir-birining ishini buzmaydi.
  3. Shoxlanish (branching) – Kodning nusxasini olib, yangi funksiyalarni sinash mumkin, keyin esa asosiy loyihaga qo‘shish mumkin.
  4. Tarqatilgan tizim – Har bir dasturchining kompyuterida loyiha tarixining to‘liq nusxasi bo‘ladi, faqat markaziy serverda emas.
  5. GitHub/GitLab/Bitbucket bilan mashhur – Ushbu platformalar Git’ni ishlatib loyihalarni saqlash va ulashishda qo‘llanadi.

👉 Qisqacha aytganda: Git — bu kod uchun vaqt mashinasi bo‘lib, jamoada birga ishlashni osonlashtiradi.

🟢 Git

  • Git — bu versiyalarni boshqarish tizimi (VCS).
  • U o'zimizning kompyuterinmizda ishlaydi.
  • Biz kodni kuzatish, saqlash, eski versiyalarga qaytish, branch ochish va merge qilishni Git orqali qilamiz.
  • Masalan: git init, git add, git commit, git push kabi buyruqlar orqali ishlatiladi.

🔵 GitHub

  • GitHub — bu Git loyihalari uchun hosting platformasi.
  • GitHub bulutda (onlayn) ishlaydi.
  • Siz o‘z Git loyihalaringizni GitHub’ga joylashtirib, ularni boshqalar bilan ulashishingiz mumkin.
  • U orqali hamkorlik (collaboration) qilish, pull request ochish, kodni ko‘rib chiqish (code review), muammolarni kuzatish (issues) mumkin.

👉 Oddiy qilib aytganda:

  • Git — bu vosita (instrument).
  • GitHub — bu Git loyihalari uchun saqlash joyi va hamkorlik platformasi.

Git’ning eng ko‘p ishlatiladigan buyruqlari va ularning qisqacha izohi:


🔹 Boshlang‘ich buyruqlar

  • git init – yangi Git repositoriyasini yaratish.
  • git clone <url> – mavjud loyihani (masalan, GitHub’dan) kompyuterga ko‘chirib olish.

🔹 O‘zgarishlarni kuzatish

  • git status – loyihadagi o‘zgarishlarni ko‘rish.
  • git add <fayl_nomi> – faylni commit qilish uchun tayyorlash.
  • git add . – barcha fayllarni tayyorlash.
  • git commit -m "xabar" – o‘zgarishlarni xotiraga saqlash.

🔹 Tarmoqlar (branches)

  • git branch – barcha branchlarni ko‘rish.
  • git branch <nom> – yangi branch yaratish.
  • git checkout <nom> – boshqa branchga o‘tish.
  • git checkout -b <nom> – yangi branch yaratib, unga o‘tish.
  • git merge <nom> – boshqa branchdagi o‘zgarishlarni birlashtirish.

🔹 Uzoqdagi (remote) repository bilan ishlash

  • git remote -v – bog‘langan repositorylarni ko‘rish.
  • git push origin <branch> – kodni GitHub’ga yuborish.
  • git pull origin <branch> – GitHub’dan so‘nggi o‘zgarishlarni olish.
  • git fetch – faqat yangilanishlarni yuklab olish (lekin merge qilmaydi).

🔹 Tarixni kuzatish

  • git log – commitlar tarixini ko‘rish.
  • git diff – koddagi farqlarni ko‘rish.
  • git show <commit_id> – aniq commit haqida ma’lumot.

👉 Qisqacha aytganda:

  • git add → o‘zgarishni tayyorlash.
  • git commit → o‘zgarishni saqlash.
  • git push → GitHub’ga yuborish.
  • git pull → GitHub’dan olish.

Yana command'lar

  • git config --global core.editor "code --wait" vscode ni default text editor sifatida tanlash

Git ni sozlash

  • git config --global user.name "Your Name" - commitlarni username ni ko'rsatish
  • git config --global user.email "you@example.com" - git ga emailni qo'shib qo'yish
  • git config --list - sozlamarni ko'rish

GitHub profilini sozlash

Dastlab username bilan bir xil bo'lgan repository yaratamiz, Readme.md faylini qo'shgan holda

GIT da ishni boshlash

1. mkdir qilib papka yaratamiz

2. cd papka nomi bilan papkaga kiramiz

3. git init qilib ishga tushiramiz

4. pwd qaysi papkada turganimizni ko'rsatadi

Staging bosqichi

1. git add file nomi

2. git add --all yoki git add -A qilib fayllarni qo'shamiz

3. git rm --chached fileName bilan faylni unstage qilish mumkin

Git Commit

  • git commit -m "message"- Xabar bilan bosqichma-bosqich o'zgarishlarni amalga oshiring
  • git commit -a -m "message"- Barcha kuzatilgan o'zgarishlarni amalga oshirish (stage qilib o'tirmasdan)
  • git log- Commit qilish tarixini ko'ring

Oxirgi o'zgarishni bekor qilish

  • git revert HEAD - oxirgi o'zgarishlarni bekor qilish

.gitignore

git rm -r --cached <filename or folder>

🔹 What it does:

  • git rm → fayllarni Git'ning staging/index qismidan olib tashlaydi
  • -r → papkalarni rekursiv tarzda olib tashlaydi
  • --cached → file va papkalarni Git kuzatuvidan olib tashlaydi lekin kompyuterda lokal holatda qoladi

Masalan quyidagi papkani qanday qilib Git kuzatuvidan olib tashlashni ko'rib chiqamiz

Perfect 👍 Let’s stop Git from tracking your cachfiles folder.
Here are the exact commands you need to run step by step:


1) Add cachfiles to .gitignore

echo "cachfiles/" >> .gitignore

2) Remove it from Git tracking (but keep it locally)

git rm -r --cached cachfiles

3) Stage changes

git add .gitignore

4) Commit the changes

git commit -m "Stop tracking cachfiles folder"

5) Push to remote (GitHub/GitLab, etc.)

git push

✅ After this, the cachfiles folder will remain on your computer, but Git will ignore it and stop tracking it in commits.

https://www.atlassian.com/git/tutorials/saving-changes/gitignore

https://www.git-tower.com/learn/git/faq/ignore-tracked-files-in-git

Git remote

git remote - buyrug'i bizga boshqa repolardagi o'zgarishlarni ko'rish, qo'shish, o'chirish kabi imkoniyatlarni beradi.

git remote add <name> <url> - buyrug'i esa masofadagi repoga bog'lanish imkonini beradi

  • git push - mahalliy repodagi commitlar, fayllar va reflarni masofaviy repoga yuborishuchun ishlatiladi
  • git fetch - masofaviy repodagi commitlar, fayllar va reflarni mahalliy repoga yuklab olish uchun ishlatiladi
  • git pull - masofaviy repo tarkibidagi barcha commit va fayllarni yuklab olib darhol mahalliy reponi yangilaydi. Bu buyruq git fetch va git merge buyruqlari birlashmasidir