GitHub: kodingiz dunyoga chiqadi
Bugun lokal reponi masofaga ulaymiz va birinchi loyihangizni e'lon qilamiz
11-sinfProfessional IT development1-hafta · 3-dars
Bugungi yo'l xaritasi
Remote va push
Akkaunt, repo, xavfsiz kirish, push/pull/clone
README va .gitignore
Repo old eshigi va sirlardan himoya
Issues va loyiha
Vazifa yuritish va dev-log ni e'lon qilish
01
Lokal Git dan GitHub gacha
Nega tarix faqat noutbukda qolmasligi kerak
Git va GitHub bir narsa emas
Git
Kompyuteringizdagi dastur. Tarixni yuritadi: commit, status, log. Internet shart emas.
VS
GitHub
Repolarni saqlaydigan veb-xizmat. Hamkorlik: Issues, Pull Request, review, Actions.
Git — shaxsiy daftar. GitHub — shu daftarning umumiy kutubxonadagi nusxasi va muhokama doskasi.
Lokal, remote va ikkinchi nusxa
Boshlash: to'rt qadam
1. Akkaunt: o'zingiz, o'z brauzeringizda. Nomi professional bo'lsin: github.com/nom CV'dagi havola
2. 2FA: ikki bosqichli tasdiqlash. Tiklash kodlarini xavfsiz saqlang
3. Kirish usuli: SSH kalit, token yoki gh auth login
4. Bo'sh repo: dev-log, README va .gitignore belgilanmaydi
Parol, token va kodlarni hech kimga, mentorga ham, chatga ham yubormang.
02
Xavfsiz kirish
Token, SSH kalit va ularni qanday asrash kerak
Autentifikatsiya: uch yo'l
HTTPS + token
Parol o'rniga PAT. Oddiy parol bilan push bo'lmaydi
SSH kalit
Kalit juftligi. Uzoq muddatli eng qulay yo'l
gh auth login
GitHub CLI: brauzer orqali, tokenni o'zi boshqaradi
SSH: qulf va kalit
Sizning kompyuteringiz
id_ed25519 · maxfiy
id_ed25519.pub · ochiq
qo'yiladi
GitHub
ochiq kalit
maxfiy: hech qachon
Kalit yaratish va tekshirish
ssh-keygen -t ed25519 -C "sizning@emailingiz"
cat ~/.ssh/id_ed25519.pub
ssh -T [email protected]
Faqat .pub ko'rsatiladi. Nuqtasiz fayl maxfiy: yubormang, commit qilmang, skrinshot qilmang.
Token: vaqtinchalik parol
PAT oddiy paroldan xavfsizroq: unga cheklov qo'yiladi. Qoidalar uchun pastga ↓
Token qoidalari
- Minimal ruxsat: faqat kerakli repo va amal
- Qisqa muddat qo'ying (expiration)
- Kodga, README'ga, chatga, skrinshotga yozmang
- Sizib chiqsa: darhol GitHub'da o'chiring (revoke)
Nega bu muhim?
Ochiq repolarni botlar skanerlaydi: sizib chiqqan kalit daqiqalar ichida topilishi mumkin.
Qo'llanma tamoyili: minimal vakolat (least privilege).
03
Remote, push, pull, clone
Birinchi commitlaringiz GitHub'ga yo'l oladi
Ulash va yuborish
git branch -M main
git remote add origin [email protected]:nom/dev-log.git
git remote -v
git push -u origin main
origin: masofaviy repo nomi
-u: keyin shunchaki git push / git pull
Terminlar: bosing va aylantiring
Masofaviy repo nomi. Odatda GitHub'dagi nusxa.
Lokal commitlarni GitHub'ga yuboradi.
Reponing to'liq nusxasini tarix bilan yuklab oladi.
GitHub'dagi repo
github.com/nom/dev-log
Quick setup
...or push an existing repository from the command line
push dan keyin
github.com/nom/dev-log
nom / dev-log
3 commits · main
.gitignore README.md todo.py
dev-log
Terminalda ishlaydigan kichik vazifalar ro'yxati.
Ma'lumot qayerdan qayerga o'tadi
Working
Directory
Staging
Lokal
repo
GitHub
origin
add
commit
push
fetch yuklaydi, pull yuklab qo'shadi
fetch va pull
git fetch
Yangilikni yuklab oladi. Fayllaringizga tegmaydi. git log origin/main bilan qarab olasiz.
VS
git pull
fetch + birlashtirish. Yangilik joriy shoxga qo'shiladi.
Gumon bo'lsa, avval fetch. Ritm: fetch, pull, keyin push.
Odatiy xato: push rad etildi
$ git push
! [rejected] main -> main (fetch first)
error: failed to push some refs
- Masofada sizda yo'q commit bor
- Yechim:
git pull, keyin git push
--force bilan majburlamang: boshqalarning ishini yo'qotasiz.
04
README, .gitignore, Issues
Repo professional ko'rinishi uchun uchta narsa
README.md: reponing old eshigi
- Nom va bir jumlalik tavsif
- Imkoniyatlar
- Ishga tushirish (kod bloki)
- Muallif
Savol: notanish odam 2 daqiqada ishga tushira oladimi?
README.md
dev-log
Terminalda ishlaydigan vazifalar ro'yxati.
Ishga tushirish
python3 todo.py list
.gitignore: filtr
.env
todo.py
__pycache__/
README.md
.gitignore
×
×
GitHub
.gitignore namunasi
# sirlar
.env
*.pem
# chiqindilar
__pycache__/
# mahalliy ma'lumot
tasks.json
# OS va muharrir
.DS_Store
Birinchi commitdan oldin yozing. Allaqachon commit qilingan fayl uchun: git rm --cached fayl
Sir tarixga tushsa: tartib
1. Sirni bekor qiling (revoke)
2. .gitignore ga qo'shing
3. git rm --cached
Faylni o'chirib commit qilish yetmaydi: eski commitda sir qoladi (git log -p).
Issues: vazifa kartochkasi
github.com/nom/dev-log/issues/1
README ga ishga tushirish bo'limi #1
Open · label: documentation
Notanish odam buyruqlarni ko'rishi kerak.
- Sarlavha, tavsif, label
- Raqam:
#1, #2
- Commit:
Closes #1 yopadi
Issue ni commit bilan yopish
git commit -am "docs: ishga tushirish bo'limi. Closes #1"
git push
1. Issue ochiladi
Vazifa kartochkasi: #1
2. Kod yoziladi
Commit xabarida Closes #1
3. push va yopiladi
push dan keyin Issue avtomatik yopiladi
Tezkor savol
Kalit tasodifan commit qilinib, push qilindi. Faylni o'chirib yangi commit qildingiz. Xavf yo'qoldimi?
Eski commit tarixda qoladi. Birinchi qadam: kalitni bekor qilish (revoke). Keyingi safar: .gitignore avval, commit keyin.
Amaliyot: dev-log 25 daqiqa
OsonAkkaunt + 2FA, SSH kalit (yoki gh), ulanishni tekshiring (8 daqiqa)
O'rtadev-log: dastur, README, .gitignore, 3 ta commit, push; 2 ta Issue, bittasini Closes #N bilan yoping
Qiyinclone bilan ikkinchi nusxa, o'zgarish push, asl papkada fetch va pull
Keyingi hafta: jamoaga tayyorlanamiz
Issue
Branch
Pull Request
Review
Bugun hamma ishni main da qildik. Jamoada bunday qilinmaydi: branching strategiyalari, Pull Request, code review.
Xulosa
Bugun o'rgandik
Git va GitHub, remote, xavfsiz kirish, push/pull/clone, README, .gitignore, Issues
Uyga vazifa
dev-log ga 2 ta commit, 1 ta Issue yoping, repo havolasini yuboring. Parol/token yubormang