- Published on
Git: cherry pick, commit o'chirish va tahrirlash
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Bu darsda uchta qo'shimcha git amali ko'rib chiqiladi:
- Cherry pick β boshqa branchdan faqat bitta commit olish
- Drop commit β xato commit-ni tarixdan olib tashlash
- Edit commit message β commit xabarini o'zgartirish
Ushbu amallar Xcode Source Control tomonidan qo'llab-quvvatlanmaydi β buning uchun Git Kraken yoki boshqa GUI vositasi kerak.
Git asosiy terminlar β qisqacha takrorlash
| Amal | Ma'no |
|---|---|
| Clone | Repozitoriyni mahalliy kompyuterga nusxalash |
| Commit | Joriy o'zgarishlarni checkpoint sifatida saqlash |
| Stage | Commit uchun o'zgarishlarni tayyorlash |
| Stash | O'zgarishlarni commit qilmasdan keyinroq uchun saqlash |
| Push | Mahalliy commit-larni remote repoga yuborish |
| Pull | Remote commit-larni mahalliy repoga olish |
| Merge | Ikki branchni birlashtirish |
| Rebase | Bitta branchni boshqasining tepasiga ko'chirish |
Cherry pick β bitta commit ko'chirish
Qachon kerak bo'ladi?
Ikkita parallel branch bor. Birinchi branchda bir o'zgaruvchining tuzatilishi (bugfix) commit qilingan. Ikkinchi branch hali tayyor emas, to'liq merge qilish noto'g'ri β lekin faqat o'sha bitta tuzatishni olish zarur.
Bu holat uchun:
- Merge β butun branchni birlashtiradi, zarur bo'lmagan commit-lar ham keladi
- Interactive rebase β branchning asosini ko'chiradi, atigi bitta commit kerak bo'lsa ortiqcha
- Cherry pick β faqat bitta commit-ni joriy branchga qo'shadi, boshqa hech narsa o'zgarmaydi
Cherry pick qanday ishlaydi
some-random-branch: A --- B --- C
β
cherry-pick
some-other-feature: D --- E --- B'
B commit-i some-other-feature branchiga nusxa sifatida qo'shiladi (B'). Original branch o'zgarmaydi.
Git Kraken-da cherry pick
- Source Control-da tarixdan kerakli commit-ni toping
- O'sha commit ustiga o'ng tugma bosing
Cherry Pick Committanlang
Cherry pick qilingandan so'ng commit joriy branchga qo'shiladi. Keyinchalik original branch merge qilinganda, source control bu o'zgarish allaqachon mavjudligini tanib, conflict chiqarmaydi.
Xcode-da cherry pick
Xcode-da ham cherry pick mumkin: Repositories panelida kerakli commit topiladi, ustiga o'ng tugma bosib Cherry-pick Commit tanlanadi.
Commit hash β commit identifikatori
Har bir commit-ning noyob identifikatori β hash mavjud. U juda uzun raqam-harflar kombinatsiyasi:
ddc2094a8f3b1c7e...
Bu identifikator yordamida aniq bir commit topiladi (Ctrl+F bilan qidirish mumkin) va hamkasbga xabar qilib yuborilishi mumkin. Commit xabarlari bir xil bo'lishi mumkin, lekin hash har doim noyob.
Drop commit β commit-ni tarixdan o'chirish
Ba'zan xato commit qilib qo'yiladi β kerak bo'lmagan o'zgarish, noto'g'ri fayllar yoki xato xabar. Drop amali shu commit-ni tarixdan butunlay o'chiradi.
Git Kraken-da drop
- Tarixda o'chirmoqchi bo'lgan commit-ni toping
- Ustiga o'ng tugma bosing
Drop Committanlang
Muhim: force push zarur
Drop qilingandan so'ng local versiya remote-dan ortda qoladi β chunki remote-da o'sha commit hali bor. Uni sinxronlash uchun force push kerak:
local (dropped) β force push β remote (commit deleted)
Ogohlantirish: Force push remote tarixni qayta yozadi. Drop qilingan commit-lar qaytarib bo'lmaydi. Bu amal faqat shaxsiy yoki hali shared bo'lmagan branchlarda ishlatilishi tavsiya etiladi.
Edit commit message β xabarni o'zgartirish
Yozilgan commit xabarida xatolik bo'lsa, uni tahrirlash mumkin.
Git Kraken-da tahrirlash
- Commit ustiga o'ng tugma bosing
Edit Commit Messagetanlang- Xabarni o'zgartiring va tasdiqlang
Muhim: bu ham force push talab qiladi
Commit xabari o'zgartirilganda commit o'zi ham yangilanadi (yangi hash hosil bo'ladi). Natijada local va remote tarix mos kelmay qoladi β force push kerak bo'ladi.
Tavsiya: Commit xabarini tahrirlash amalda kamdan-kam zarur. Kichik imlo xatolari kelajakda muammo tug'dirmaydi. Agar commit hali push qilinmagan bo'lsa, tahrirlash xavfsiz. Lekin allaqachon remote-ga push qilingan commit xabari o'zgartirilsa va force push qilinsa β jamoaga xabar berish kerak.
Eski commit-ni tekshirish (checkout)
Git tarixidagi istalgan eski commit-ga o'tib ko'rish mumkin β bu o'sha vaqtdagi kod holatini ko'rish imkonini beradi.
Faqat ko'rish uchun
Tarixda kerakli commit-ni toping β o'ng tugma β Checkout Commit. Bu holatda "detached HEAD" holati yuzaga keladi β branch emas, faqat commit-da turibsiz. Xcode sarlavhasida branch nomi o'rniga commit hash ko'rinadi.
Ko'rish va o'zgartirish uchun
Eski commit-ni branch sifatida olish maqsadga muvofiqroq:
- Tarixda kerakli commit-ni toping
- O'ng tugma β
Create Branch Here - Yangi branch nomini bering (masalan,
old-main-pre-analytics)
Endi shu eski holatda mustaqil branch sifatida ishlash mumkin.
Xulosa
Bu darsda o'rganildi:
- Cherry pick β boshqa branchdan faqat bitta commit-ni joriy branchga nusxalash; merge yoki rebase qilmasdan
- Commit hash β har bir commit-ning noyob identifikatori, commit topish va ulashish uchun foydali
- Drop commit β tarixdan commit-ni o'chirish; force push talab qiladi va qaytarib bo'lmaydi
- Edit commit message β commit xabarini o'zgartirish; bu ham commit-ni yangilaydi va force push talab qiladi
- Checkout commit β eski holatni ko'rish uchun; agar o'zgartirish kerak bo'lsa, yangi branch yaratish tavsiya etiladi
- Ushbu amallarning barchasi Xcode-da mavjud emas β Git Kraken yoki boshqa GUI kerak
Keyingi darsda git flow va professional ish muhitida git ishlatish ko'rib chiqiladi.