Git bu taqsimlangan versiyani boshqarish tizimi - vaqt o'tishi bilan fayllar to'plamidagi o'zgarishlarni kuzatish yoki ishlarni muvofiqlashtirish uchun vosita. Ko'pincha dasturchilar tomonidan dasturiy ta'minot manba kodi va eng yaxshi qismidagi o'zgarishlarni muvofiqlashtirish uchun foydalaniladi; undan har qanday tarkibni kuzatishda foydalanilishi mumkin. Bu har bir narsadan kichik va katta hajmdagi loyihalarni tez va samarali bajarish uchun maxsus mo'ljallangan. Bu odamlar o'zlarining shaxsiy omborlari va guruhlari o'rtasida ishlarni to'g'ridan-to'g'ri o'rtoqlashishlari, ish oqimini markaziy ombor orqali muvofiqlashtirishlari mumkin bo'lgan juda moslashuvchan ma'nosidir. Bu shunchaki ikki xil joyda o'tirgan ikkita ishlab chiquvchiga o'zgarishlarni mustaqil ravishda amalga oshirish va yozib olish imkonini beradi.

Birlashtirish bu Git-da keng tarqalgan bo'lib, o'zgarishlarni bir tarmoqdan boshqasiga o'tkazish uchun ishlatiladi. Git birlashtirish bu boshqa joyga o'zgartirish kiritishni buyuradigan buyruq. Bu dasturchilarga Git filiali tomonidan yaratilgan mustaqil mustaqil satrlarni olish va ularni yagona tarmoqqa birlashtirish imkonini beradi. Bu faqat maqsadli filialni o'zgartiradi, faqat manbaning filiali tarixi saqlanib qoladi. Git rebase - bu xuddi shu maqsadda foydalaniladigan yana bir buyruq, ammo u umuman boshqacha yo'l tutadi. Ikkalasi ham xuddi shunday qilishadi - bitta filialdan ikkinchisiga topshirish - lekin farq ularning qanday qilib amalga oshirilishida. Biz ikkalasini taqqoslaydigan bir nechta muhim farq qiluvchi fikrlarni ta'kidlaymiz.

Git birlashtirish nima?

Git birlashtirish bu ikki yoki undan ortiq tarixiy filiallarni birlashtirgan buyruq. Birlashtirish ko'pincha ikkita filialni birlashtiradi, garchi Git bir vaqtning o'zida uchta, to'rt yoki undan ortiq filiallarni birlashtirishni qo'llab-quvvatlasa ham. Git pull birlashtirishi Git pull tomonidan bitta filialdan boshqasiga yoki boshqa omborxonadagi o'zgarishlarni kiritish uchun ishlatiladi. Birlashtirish bir omborda bo'lishi kerak, ya'ni birlashtirilishi kerak bo'lgan barcha filiallar bir xil omborda bo'lishi kerak. Birlashtirish holatlari odatda ikki yoki undan ko'p foydalanuvchi tomonidan umumiy kodni yangilashga urinish natijasida yuzaga keladi. Odatda, foydalanuvchi filialni mahalliy muhitdagi mahalliy omborida boshqa filialga birlashtiradi. Git birlashtirish manba filialining tarkibini maqsadli filial bilan alohida birlashtiradi. Maqsadli filial o'zgartirildi, manba filiali esa qoladi.

Git Rebase nima?

Git-ni qayta sotish - bu boshqa filialni hozirda ishlayotgan filialingiz bilan birlashtirish uchun ishlatiladigan yana bir alternativa, agar u chiziqli tarixni saqlamasa. Git-ni qayta tiklashning maqsadi - filialni bir joydan boshqasiga o'tkazish. Vazifalar o'zgarmas bo'lgani uchun ularni boshqa joyga ko'chirib bo'lmaydi, shuning uchun yangi o'zgartirishlar va metadata bilan yangi topshiriqlarni bajarish kerak bo'ladi. Rezaziya topshiriqlar ketma-ketligi qachon va qayerda ishlab chiqilganligi tushunchasini tubdan o'zgartiradi, natijada rivojlanish tarixining ba'zi jihatlari yo'qoladi. Bu rivojlanish dastlab asoslangan majburiyat o'zgartirilishini anglatadi. U tarixni qayta yozish orqali master filialiga berilgan barcha yangi topshiriqlarni samarali birlashtiradi. Natijada, asl filialda har bir majburiyat uchun yangi topshiriqlar paydo bo'ladi.

Git Rebase va Birlashtirish o'rtasidagi farq

  1. Git Rebase va Birlashtirish asoslari

- Garchi birlashtirish va qaytarish ham Git-dagi o'zgarishlarni birlashtirishning eng keng tarqalgan usuli bo'lsa-da va ular bir xil maqsadga xizmat qilsa - bir nechta novdalarni bittaga birlashtirish - farq ularga qanday erishish mumkinligidadir. Git birlashtirish manbali filial tarkibini maqsadli filial bilan birlashtiradi, shu bilan birga har bir topshiriq tarixining ajdodini saqlab qoladi, Git-ning qayta tuzilishi esa barcha yangi topshiriqlarni asosiy filialga qo'shib, manbaning filialida har bir topshiriq uchun yangi topshiriqlar tuzadi. .

  1. Git Rebase va Birlashtirishning ishlashi

- Git birlashishi bilan siz avval birlashtiriladigan filialga o'tasiz, so'ngra birlashtirish uchun filialni tanlash uchun birlashtirish buyrug'idan foydalanasiz. Agar filial majburiyatga ishora qilsa va majburiyat bu siz o'zgartirgan darajadagi donolik bo'lsa, birlashtirish buyrug'i filialda yoki topshiriq darajasida birlashadi. Rebase, boshqa tomondan, biroz boshqacha. Avval siz qayta sotish uchun filialni tanlaysiz va keyin uni qayerga joylashtirishni tanlash uchun rebase buyrug'idan foydalaning.

  1. Git Rebase va Birlashmaning maqsadi

- Birlashish ikkita filial orasidagi birlashishni anglatadigan yangi majburiyatni yaratadi. U rivojlanishning turli parallel chiziqlari (tarmoqlari) tarkibidagi o'zgarishlarni birlashtirish majburiyatini yaratish orqali birlashtiradi. Maqsad ikki yoki undan ortiq filiallarni birlashtirish, shu jumladan hozirgi filialga ajralish nuqtasidan boshlab barcha o'zgarishlarni kiritish. Tez oldinga siljish - bu Git-da birlashuvning odatiy holati. Rebasing, boshqa tomondan, individual filialni loyihaning tarixini qayta yozish orqali o'zgartiradi va asl filialda har bir majburiyat uchun yangi topshiriqlar yaratadi va natijada ajralib chiqadigan filiallarsiz chiziqli tarix paydo bo'ladi.

  1. Git Rebase va Birlashish tarixi

- Git birlashishi tarixni o'zgartirmaydi, filialning kontekstini saqlab qolgan holda, mavjud filiallar hech qanday tarzda o'zgartirilmaydi. Bu yangi majburiyatni keltirib chiqaradi (agar bu tezkor ravishda birlashtirilmagan bo'lsa), ammo filialga topshiriqlarni bajarish mumkin. Boshqa tomondan, Git-ning qayta sotilishi ehtimoliy tarixni soddalashtiradi. Majburiyatlar qayta yoziladi, eski versiyalari unutiladi va DAG qayta ko'rib chiqish o'zgartiriladi. Siz endi e'lon qilingan filiallarni qayta sotib ololmaysiz degan ma'noni anglatadi, shuning uchun siz qayta sotish orqali buyurtmalarni olib bo'lolmaysiz.

Rebase va boshqalar. Birlashish: taqqoslash jadvali

Git Rebase va boshqalar haqida qisqacha ma'lumot. Birlashtirish

Xulosa qilib aytganda, birlashtirish va qayta qo'shish Git-dagi o'zgarishlarni integratsiyalashning ikki usuli hisoblanadi, ammo ular buni qanday amalga oshirayotganliklari bilan farq qiladi. Birlashtirish bu nizolarni hal qilish uchun bitta joydan iborat bo'lgan bir bosqichli operatsiya va filial tomonidan bajarilishi mumkin bo'lgan majburiyatlarga erishish mumkin. Rebase, boshqa tomondan, har bir topshiriqni alohida-alohida qayta taqsimlaydi va manbaning filialida har bir majburiyat uchun yangi topshiriqlar yaratib, tarixni qayta yozadi. Shunday qilib, bir vaqtlar erishish mumkin bo'lgan narsaga endi erishib bo'lmaydi. Rezaziya topshiriqlar ketma-ketligi qachon va qayerda ishlab chiqarilganligini tushunchani tubdan o'zgartiradi.

Adabiyotlar

  • Tasvir krediti: https://commons.wikimedia.org/wiki/File:Mergevsrebase.png
  • Tasvir krediti: https://www.flickr.com/photos/appleboy/5488984566
  • Narebski, Yoqub. Gitni o'zlashtirish. Birmingem: Packt Publishing, 2016. Chop etish
  • Loeliger, Jon va Metyu Makkullu. Git bilan versiyani boshqarish. Sebastopol, Kaliforniya: O'Reilly Media, 2012. Chop etish
  • Laster, Brent. Professional Git. Xoboken, Nyu-Jersi: Jon Vili va Sons, 2016. Chop etish
  • Silverman, Richard E. Git cho'ntagiga oid qo'llanma: Ishchi kirish. Sebastopol, Kaliforniya: O'Reilly Media, 2013. Chop etish