AXV

Git bilan Versiya Nazorati Asoslari

Tizimning vazifasi, 3 ta holat, commitlar va Android uchun .gitignore

10-sinfAdvanced Android3-hafta · 7-dars

Bugun nimani o'rganamiz?

Git nima?

Tarqoq versiya nazorati tizimi va uning «vaqt mashinasi» vazifasi

Gitning 3 holati

Working Directory, Staging Area va Repository (.git) arxitekturasi

Android .gitignore

Kompilyatsiya va shaxsiy SDK fayllarini repodan toza saqlash qoidalari

Muammo: Nusxalar girdobi!

Dasturchilarning eski xatosi

Loyiha_v1.zip, Loyiha_v2_oxirgi.zip, Loyiha_final_rostanam.zip...

Bitta xato tufayli butun loyiha buzilib ketsa, qayerda nima o'zgarganini bilish imkonsiz bo'lib qoladi.

Git yechimi

Barcha o'zgarishlar bitta papka ichida, aniq sana, muallif va izoh bilan vaqt shajarasiga muhrlanadi.

Istalgan vaqtda eski holatga bitta buyruq bilan qaytish mumkin.

Markazlashgan (SVN) vs Tarqoq (Git)

ESKI: Markazlashgan (SVN) Markaziy Server Dev 1 Dev 2 Internet o'chsa — ish to'xtaydi! ZAMONAVIY: Tarqoq (Git) Remote (GitHub) Dev 1 Kompyuter (To'liq repo tarixi) Dev 2 Kompyuter (To'liq repo tarixi) Offline rejimda ham 100% ishlaydi!

O'zingizni tanishtiring: git config

Mualliflik sozlamalari

Git har bir yozilgan kod ostida kim turganini bilishi kerak. Buning uchun bir marta buyruq kiritiladi:

git config --global user.name "Ali Valiyev"
git config --global user.email "[email protected]"

Tekshirish buyrug'i

Kiritilgan parametrlarni ko'rish uchun:

git config --list

Bu ma'lumotlar keyinchalik GitHub'dagi profilingiz bilan bog'lanadi.

01

Gitning 3 Asosiy Holati

Working Directory, Staging Area va Repository (.git)

Git qanday ishlaydi? (3 ta maydon)

1. WORKING DIR Fayllar papkasi MainActivity.kt (Tahrir qilinmoqda) git add 2. STAGING AREA Tayyorlash sahnasi MainActivity.kt (Suratga tayyor) git commit 3. .git OMBOR Doimiy xotira Commit #1 Commit #2 Tarix saqlandi

Repozitoriy ochish: git init

Yangi ombor yaratish

Istalgan loyiha papkasiga kirib, terminalda yoziladi:

git init

Natijada papka ichida yashirin .git/ papkasi paydo bo'ladi.

Muhim ogohlantirish!

.git/ papkasi — Gitning barcha xotirasi. Agar siz uni o'chirib yuborsangiz, loyihaning butun o'tmishi bir zumda yo'qoladi!

Oddiy fayllar qoladi, lekin commitlar tarixi o'chib ketadi.

Fayllar holati: git status

Qizil rang (Untracked / Modified)

Untracked files:
    (use "git add <file>...")
        MainActivity.kt

Git fayl borligini ko'rdi, lekin u hali sahnaga kiritilmagan.

Yashil rang (Changes to be committed)

Changes to be committed:
    new file:   MainActivity.kt

Fayl git add qilindi va suratga olinishga tayyor holatda turibdi.

Sahnaga olib chiqish: git add

Bitta faylni qo'shish

Faqat aniq bir fayl o'zgarishini sahnaga chiqarish:

git add MainActivity.kt

Boshqa fayllar Working Directory'da qoladi.

Barcha o'zgarishlarni qo'shish

Loyiha papkasidagi hamma o'zgargan va yangi fayllarni qo'shish:

git add .

Nuqta (.) barcha joriy papka fayllarini bildiradi.

Birinchi commitni amalga oshirish qadamlari

1

Loyiha papkasini ochish

Terminalda loyiha papkasiga kiring: cd MyAndroidApp

2

git init

Omborni ishga tushiring va .gitignore mavjudligini tekshiring.

3

git add .

Barcha kerakli manba kodlarini sahnaga (Staging Area) olib chiqing.

4

git commit -m "..."

Ma'noli izoh bilan tarixga yozing: git commit -m "Initial commit"

Commit xabarlari madaniyati (Commit Conventions)

Yomon commit xabarlari

"kod yozdim", "tuzatish", "asdasd", "oxirgi versiya"

Bir oydan keyin qaysi commit nima qilganini hech kim topolmaydi!

Professional format

feat: Foydalanuvchi profil ekrani qo'shildi

fix: Login tugmasi bosilmaslik xatosi tuzatildi

docs: README fayliga qo'llanma kiritildi

Tarix bo'ylab sayohat: git log

Batafsil tarix: git log

commit a1b2c3d4e5f6... (HEAD -> main)
Author: Ali Valiyev <[email protected]>
Date:   Sun Oct 4 14:20:00 2026

    feat: Login sahifasi yaratildi

Har bir commitning 40 xonali unikal xeshi (SHA-1) ko'rinadi.

Ixcham ko'rinish: --oneline

git log --oneline --graph
* a1b2c3d feat: Login sahifasi
* e4f5g6h docs: README yaratildi
* 9z8y7x6 Initial commit

Katta loyihalarda tarixni tez ko'rish uchun eng qulay usul.

02

Android Loyihalari va .gitignore

Repozitoriyni ortiqcha og'ir kesh va shaxsiy parollardan tozalash

.gitignore faylining filtri qanday ishlaydi?

LOYIHA FAYLLARI MainActivity.kt build/ (150 MB) local.properties build.gradle.kts app-release.apk .gitignore FILTRI /build /.gradle local.properties *.apk, *.aab TOZA GIT REPO MainActivity.kt build.gradle.kts res/ (XML, icons) Hajm: 2 MB (150 MB emas!)

Nega local.properties Gitga kirmaydi?

Shaxsiy SDK yo'li

sdk.dir=/Users/ali/Library/Android/sdk

Agar siz bu faylni Gitga yuklasangiz, do'stingiz (masalan, Windows ishlatuvchi) kodni yuklab olganda uning Android Studio'si ishlamay qoladi!

Maxfiy kalitlar

Ko'pincha API kalitlar va parollar shu yerda saqlanadi.

Uni ochiq repoga yuklash xavfsizlikka jiddiy putur yetkazadi.

Shuning uchun u doimo .gitignore ichida bo'ladi.

Android loyihasi uchun standart .gitignore

Qoidalar namunasi

# Gradle va Build chiqishlari
.gradle/
build/
app/build/

# Shaxsiy SDK
local.properties

# Android Studio keshlari
.idea/caches/
.idea/libraries/
*.iml

Yakuniy paketlar

# Chiqarilgan APK va AAB lar
*.apk
*.aab

# Tizim fayllari
.DS_Store
Thumbs.db

Android Studio loyiha ochganda ushbu faylni avtomatik to'g'ri yaratib beradi.

Commit nima? (Loyiha lahzasi)

Commit #1 8a3f91 Initial commit Commit #2 4c7d2e feat: Auth API Commit #3 9b1a5f fix: UI layout HEAD (Main)

Git sirlari (Kartalarni bosing)

SHA-1 Hash nima?

bosing

Unikal ID: Har bir commitning 40 belgili kodi (masalan, 4c7d2e...). Gitda hamma narsa shu kod orqali topiladi.

.git papkasi

bosing

Ombor: Butun loyiha tarixi va sozlamalari shu yashirin papkada yotadi. Uni o'chirish loyihani nollaydi.

.gitignore kuchi

bosing

Tozalik: Keshlar va shaxsiy kalitlarni repodan chetlatib, loyihani ixcham va xavfsiz saqlaydi.

Darsda o'rganilgan asosiy terminal buyruqlari

Sozlash va Boshlash

git config --global user.name "..." — ismni kiritish

git init — yangi ombor ochish

git status — fayllar holatini tekshirish

Sahnaga chiqarish va Tarix

git add <fayl> (yoki git add .) — sahnaga olish

git commit -m "izoh" — tarixga muhrlash

git log --oneline — tarixni ko'rish

Tezkor bilim sinovi

Gitda o'zgartirilgan faylni doimiy omborga yozishdan oldin qaysi maydonga chiqarish shart?
Faqat Working Directory da qoldirish kifoya
Staging Area (git add orqali)
To'g'ridan-to'g'ri internetga yuklash
Faylni o'chirib qayta yaratish

Sinfdagi amaliy laboratoriya ishi

1. Repozitoriy ochish

Terminalda AndroidNotes papkasini oching, git init qiling va README.md faylini commit qiling.

2. .gitignore sinovi

.gitignore fayli yaratib, *.log deb yozing. Yangi log fayl yaratganda uning kuzatilmasligini tekshiring.

Darsning 4 oltin qoidasi

1. Har doim statusni tekshiring

Commit qilishdan avval doim git status buyrug'i bilan sahnani tekshiring.

2. Ma'noli commit yozing

Commit xabarlari nima qilinganini aniq ifodalasin (masalan, feat: ...).

3. .gitignore ni unutmang

Ortiqcha keshlar va parollarni aslo Gitga yuklamang.

4. Tez-tez commit qiling

Katta ish tugashini kutmay, har bir kichik mantiqiy blokdan so'ng commit qiling.

Uyga vazifa va anons

1. Gitni sozlash

O'z kompyuteringizda git config orqali ism va pochtani kiritish.

2. 3 ta ketma-ket commit

Yangi loyiha ochib, kamida 3 ta ma'noli commit qilish va git log ni ko'rish.

Keyingi dars: Git tarmoqlari (Branch), birlashtirish (Merge) va to'qnashuvlarni (Conflict) yechish!