AXV

Git branchlar va masofaviy omborlar

Tarmoqlanish (branching), birlashtirish (merge), ziddiyatlar va GitHub ekotizimi

10-sinfDevOps3-hafta · 7-dars

Bugungi dars maqsadlari

Branchlar mantig'i

Asosiy main kodiga daxl qilmay parallel ishlab chiqish.

Birlashtirish (Merge)

Fast-forward, 3-way merge va konfliktlarni hal qilish.

GitHub va Masofaviy ish

Remote origin, push, pull va jamoaviy kod almashish.

Git branchlari raqamlarda

0
bitta branch xotira hajmi
1 ms
yangi branch ochish vaqti
0 xavf
asosiy kod barqaror qoladi
Git branch shunchaki commit xeshiga qaratilgan yengil ko'rsatkichdir!
01

Branching arxitekturasi

Loyiha tarixida yangi parallel tarmoq ochish

Tarmoqlanish (Branching) modeli

C1 C2 main C3 C4feature-login C5main (HEAD)
02

Branchlarni birlashtirish

Fast-forward, 3-way merge va ziddiyatlarni (conflicts) hal qilish

Merge turlari

Fast-forward Merge

Main branchda siz ajralganingizdan beri yangi kommit bo'lmagan.

Git shunchaki main ko'rsatkichini oldinga surib qo'yadi.

Qo'shimcha merge commit yaratilmaydi.

3-Way Merge (Haqiqiy birlashuv)

Ikkala branchda ham parallel ravishda yangi kommitlar kiritilgan.

Git ikkita ota kommitga ega bo'lgan yangi «Merge commit» hosil qiladi.

Tarixda tarmoqlanish va birlashish yaqqol aks etadi.

Merge Conflict (Mojaro) anatomiyasi

<<<<<<< HEAD (Joriy main branch kodi) const API_URL = "https://production.api.com"; ======= const API_URL = "https://staging-v2.api.com"; >>>>>>> feature-api (Qo'shilayotgan yangi kod)

Konfliktni hal qilish algoritmi

1. Faylni ochish

Konfliktli faylni matn muharririda oching.

2. To'g'ri kodni qoldirish

Keraksiz qatorlarni va <<<, ===, >>> belgilarini o'chiring.

3. Commit qilish

git add [fayl] va git commit bilan yakunlang.

03

Masofaviy omborlar (Remote)

GitHub, GitLab va jamoaviy hamkorlik: push va pull

Lokal va Masofaviy ombor aloqasi

Lokal kompyuter Sizning repozitoriyangiz main (lokal) git push git pull GitHub / GitLab (Remote) Markaziy bulut ombori: origin CI/CD va Jamoa hamkorligi

Masofaviy buyruqlar

git clone

bosing

GitHub'dagi butun loyihani tarixi bilan o'z kompyuteringizga to'liq ko'chiradi.

git push

bosing

Lokal commitlarni GitHub serveriga xavfsiz yuklaydi (yuklash).

git pull

bosing

Jamoaning yangi o'zgarishlarini GitHub'dan lokal omborga oladi (yangilash).

Amaliy buyruqlar sintaksisi


# Yangi branch ochish va unga o'tish
git switch -c feature-navbar

# Asosiy branchga birlashtirish
git switch main && git merge feature-navbar

# GitHub masofaviy omboriga yuklash
git push -u origin main
  
git switch -c buyrug'i git checkout -b ning zamonaviy va xavfsiz analogidir.

Tezkor bilim sinovi

Qaysi buyruq yangi branch yaratib, darhol unga o'tishni ta'minlaydi?

To'g'ri: 'git switch -c' (yoki 'checkout -b') yangi branch ochadi va avtomatik unga o'tadi!

Amaliy topshiriq 20 daqiqa

Osongit switch -c feature-test qiling va bitta fayl commit qiling.
O'rtamain ga qaytib, uni merge qiling va branchni o'chiring.
QiyinMerge conflict hosil qiling va uni qo'lda to'g'rilab muhrlang.

Bugungi dars xulosasi

O'rganilgan mavzular

Git branching, Fast-forward va 3-way merge, konfliktlarni yechish hamda masofaviy GitHub (push, pull).

Uyga vazifa

Yangi branch ochish, mustaqil funksiya yozish va asosiy branchga xavfsiz birlashtirish.