Darsliklar GIT Merge

GIT GIT Merge

git merge — bir tarmoqdagi o’zgarishlarni boshqasiga birlashtiradigan buyruq. Yangi funksiyani alohida tarmoqda yozib tugatdingiz — endi uni main ga qo’shish kerak. Aynan shu vazifani git merge bajaradi. Bu tarmoqlar bilan ishlashning yakuniy bosqichidir.

git mergebir tarmoqning o’zgarishlarini joriy tarmoqqa qo’shadigan buyruq. U ikki tarmoqning tarixini birlashtiradi.

Tarmoqni birlashtirish

Birlashtirish uchun avval qabul qiluvchi tarmoqqa (odatda main) o’tamiz, so’ng git merge bilan boshqa tarmoqni qo’shamiz:

git switch main
git merge yangi-funksiya
Updating 9f8e7d6..e5f6a7b
Fast-forward
 yangi.txt | 1 +
 1 file changed, 1 insertion(+)

main ga o’tib, yangi-funksiya ni birlashtirdik. Endi yangi-funksiya dagi barcha o’zgarishlar main da. “Fast-forward” — bu eng oddiy birlashtirish (quyida tushuntiramiz).

Fast-forward va merge commit

Birlashtirishning ikki turi bor. Ularni jadvalda ko’ramiz:

Turi Qachon Natijasi
Fast-forward main o’zgarmagan oddiy siljish
Merge commit ikkala tarmoq o’zgargan yangi birlashtiruvchi commit

Agar main ham, boshqa tarmoq ham o’zgargan bo’lsa, Git maxsus “merge commit” yaratadi:

git merge yangi-funksiya
Merge made by the 'ort' strategy.
 yangi.txt | 1 +
 1 file changed, 1 insertion(+)

Bu holatda Git ikkala tarmoq tarixini birlashtirib, yangi commit yaratdi.

To’liq ish jarayoni

Tarmoq bilan ishlashning to’liq davrasini ko’ramiz:

git switch -c funksiya
git commit -am "Yangi funksiya"
git switch main
git merge funksiya
git branch -d funksiya
Switched to a new branch 'funksiya'
[funksiya a1b2c3d] Yangi funksiya
Switched to branch 'main'
Updating ... Fast-forward
Deleted branch funksiya

Bu — professional Git ish jarayonining klassik namunasi: tarmoq yaratish → ishlash → main ga birlashtirish → tarmoqni o’chirish.

Birlashtirishdan oldin

Muhim maslahat: birlashtirishdan oldin qabul qiluvchi tarmoq (main) da ekaningizga ishonch hosil qiling — git merge joriy tarmoqqa qo’shadi. Agar tarmoqlar bir xil faylni o’zgartirgan bo’lsa, konflikt yuzaga kelishi mumkin — bu keyingi darsning mavzusi.

Xulosa

Bu bo’limda git merge bilan tarmoqlarni birlashtirishni, fast-forward va merge commit farqini hamda to’liq ish jarayonini ko’rib chiqdik. Merge — tarmoqlardagi ishni birlashtirishning quroli. Keyingi darsda merge konfliktlarini hal qilishga o’tamiz.