AXV

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

Lokal repo noutbukingiz GitHub origin push pull Nusxa boshqa kompyuter clone Zaxira + hamkorlik + portfolio: bitta joyda

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

  1. Minimal ruxsat: faqat kerakli repo va amal
  2. Qisqa muddat qo'ying (expiration)
  3. Kodga, README'ga, chatga, skrinshotga yozmang
  4. 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

origin

bosing

Masofaviy repo nomi. Odatda GitHub'dagi nusxa.

push

bosing

Lokal commitlarni GitHub'ga yuboradi.

clone

bosing

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

0
commit amaliyotda
0
Issue ochiladi
0
amaliyot vaqti