Git rebase
Git rebase
Git rebase nima?
Rebase qilish commit’lar ketma-ketligini yangi asos commit’ga ko‘chiradi yoki birlashtiradi.
U ko‘pincha loyiha tarixini toza va chiziqli holda saqlash uchun ishlatiladi.
Rebase keraksiz merge commit’larning oldini olib, commit tarixingizni o‘qishni osonlashtirishi mumkin.
Git rebase’dan qachon foydalanish kerak
Git rebase’dan quyidagilar uchun foydalaning:
- Loyiha tarixini toza va chiziqli saqlash
- Keraksiz merge commit’larning oldini olish
- Bir nechta commit’ni bittaga birlashtirish
- Commit’larni tahrirlash yoki tartibini o‘zgartirish
Oddiy rebase
Joriy branch’ingizni boshqa branch ustiga ko‘chirish uchun (masalan, funksiya branch’ingizni eng so‘nggi main bilan yangilash):
Misol: main ustiga rebase qilish
git checkout feature-branch
git rebase main
Bu funksiya branch’ingizdagi o‘zgarishlarni eng so‘nggi main branch’i ustiga qayta qo‘llaydi.
Interaktiv rebase
git rebase -i <base> ma’lum bir nuqtagacha bo‘lgan commit’larni tahrirlash, tartibini o‘zgartirish, squash yoki fixup qilish imkonini beradi.
Bu commit tarixingizni boshqalar bilan ulashishdan oldin tartibga keltirish uchun foydali.
Misol: Interaktiv rebase’ni boshlash
git rebase -i HEAD~3
Bu muharrirni ochadi, unda quyidagilarni qilishingiz mumkin:
- pick: commit’ni o‘z holicha qoldirish
- squash: commit’larni birlashtirish
- edit: commit’ni o‘zgartirish uchun to‘xtash
- reword: faqat commit xabarini o‘zgartirish
Quyidagi qadamlarni bajaring:
- Commit xabarini tahrirlang yoki amalni tanlang (pick, squash, edit, reword)
- Muharrirni saqlang va yoping
- Git o‘zgarishlarni qo‘llaydi va natijalarni ko‘zdan kechirish imkonini beradi
Davom ettirish, bekor qilish yoki o‘tkazib yuborish
Agar ziddiyatga duch kelsangiz yoki commit’ni tahrirlashni yakunlashingiz kerak bo‘lsa, muammoni hal qilgach, git rebase --continue buyrug‘idan foydalaning.
Bu Git’ga rebase jarayonini davom ettirishni bildiradi.
Misol
git add fixed_file.txt
git rebase --continue
Agar biror narsa noto‘g‘ri ketsa yoki rebase’ni to‘xtatmoqchi bo‘lsangiz, git rebase --abort buyrug‘idan foydalaning.
Bu branch’ingizni rebase boshlanishidan oldingi holatiga qaytaradi.
Misol
git rebase --abort
Agar rebase davomida commit’ni tuzata olmasangiz (masalan, ziddiyatni hal qilib bo‘lmasa), uni git rebase --skip yordamida o‘tkazib yuborishingiz mumkin.
Git o‘sha commit’ni tashlab, keyingisiga o‘tadi.
Misol
git rebase --skip
O‘zgarishlarni ko‘zdan kechirish
Rebase’ni yakunlagandan so‘ng hammasi to‘g‘ri ekaniga ishonch hosil qilish uchun o‘zgarishlaringizni ko‘zdan kechiring.
Maslahatlar va eng yaxshi amaliyotlar
Rebase commit tarixini qayta yozadi.
Umumiy repozitoriyga allaqachon push qilgan commit’laringizni rebase qilishdan saqlaning.
Ma’lum bir nuqtagacha bo‘lgan commit’larni tahrirlash, tartibini o‘zgartirish, squash yoki fixup qilish uchun git rebase -i buyrug‘idan foydalaning.
Ziddiyatlarni hal qilgandan so‘ng rebase’ni davom ettirish uchun git rebase --continue buyrug‘idan foydalaning.
Davom etayotgan rebase’ni bekor qilish uchun git rebase --abort buyrug‘idan foydalaning.
Muammolarni bartaraf etish
Agar rebase davomida ziddiyatlarga duch kelsangiz, ularni hal qiling, so‘ng rebase jarayonini davom ettirish uchun git rebase --continue buyrug‘idan foydalaning.
Agar rebase davomida commit’ni tuzata olmasangiz, uni o‘tkazib yuborish uchun git rebase --skip buyrug‘idan foydalaning.
Eslatma: Rebase commit tarixini qayta yozadi.
Umumiy repozitoriyga allaqachon push qilgan commit’laringizni rebase qilishdan saqlaning.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
