Qanday qilib Gitning eng yaxshi usullari menga bir necha soat ishlashga yordam berdi

Yaqinda men NodeJS dasturi uchun sertifikatni yangilash vazifasi ustida ishladim. Bu xususiyatni yaxshilash uchun oxirgi marta ikki yil oldin tegdi. Ushbu ilovada ko'tarilgan har qanday jonli muammo darhol e'tiborni talab qiladi, garchi ilova faqat ichki ishlatilgan bo'lsa.

Ilova eski. Core-NodeJS-Infra modullari ikki yildan ortiq vaqt davomida yangilanmagan. Daryo oqimlari xizmatlari eskirgan. Biz quyi oqim xizmatlariga qo'ng'iroq qilish usuli o'zgartirildi. Qat'iy muddat - bu kekdagi gilos. Men bu rolikli kemalar safari bo'lishini bilardim.

Ilovani ishga tushirish uchun uch kun sarfladim.

Infra-modullar yangilanadimi? Tekshirish

Daryo oqimi xizmatlari yaxshi ishlayaptimi? Tekshirish

UI oqimlari yaxshi ishlayaptimi? Tekshirish

Bizning jamoamiz a'zolaridan biri bir yil oldin yangilanish uchun ilovani ko'rib chiqqan edi. U ta'kidlagan joyimdagi repo o'zi sanchilgan repo ekanligini ta'kidladi. Boshqa bir guruh ushbu repo ustida ishlagan, keyin esa bizning guruh o'sha paytdan boshlab original repo ustida ishlagan - ammo mening guruh a'zam nimadan boshlab bilmaydi. Shunday qilib, bir oz tartibsizlik bo'ldi!

To'g'ri reponi ko'rsatadigan "Egalik" vositasi bor va u menga "yolg'on gapirgan". Vaziyat shunday edi:

Forkepsiya

Ha, bu Forkception edi! WTF va FML mening og'zimdan chiqqan dastlabki ikkita fikr edi. Men jonli repoda ishlashim kerak edi, lekin men eskirgan vilka ustida ishladim. Qanday ahmoq!

Dastlab o'ylab ko'rdim - uch kunlik ishim behuda ketdi va men yangisini boshlashim kerak.

Ikkinchi fikrmi? Mening eski do'stim Gitodan so'rashga ijozat bering. U menga ancha vaqtdan beri yordam berib keladi.

Men - “Hey Git? Men juda qiynalaman va ushbu muammoni hal qilishda yordamingizga muhtojman. ”

Git - “Hey! Ok, shuning uchun avval jonli narsadan boshlashimiz kerak. Yangilanish deb nomlangan yangi filialni yarating va filialni jonli kodga yo'naltiring. Buning uchun siz git-ga qayta o'rnatishingiz mumkin. ”

Men - "Mayli, xohlayman."

Hozirgi paytda vaziyat shunday ko'rinadi.

Git xususiyatlaridan foydalanish

Git - "Rivojlanish va modernizatsiya o'rtasida nima o'zgarganligini bilishimiz kerak. Yangilanish va rivojlanish o'rtasida farq qiladigan fayllarni sanab bera olasizmi? Ushbu fayllarni alohida tekshiring va qanday o'zgarishlar bo'lganini aniqlang. "

Men - “Salqin. Men uch turdagi o'zgarishlarni ko'rmoqdaman. Men boshqa yo'l bilan qo'ng'iroq qilishim kerak bo'lgan S1 xizmati mavjud. Men S2 xizmatiga qo'ng'iroq qilishim kerak, men unga boshqa oxirgi nuqta orqali murojaat qilishim kerak. Men turli xil parametrlardan foydalanib qo'ng'iroq qilishim kerak bo'lgan S3 xizmati mavjud. Yangilanish bo'limidagi pack.json faylida ba'zi yangilangan paketlar mavjud. Shunday qilib, faqat bir nechta paketlarni o'zgartirish kerak. "

Git - "O'zgarishlarni ajratganingiz juda ajoyib. Endi menga rivojlanish tarmog'ingizning Git jurnalini ko'rsating. Umid qilamanki, siz ba'zi asosiy Git amaliyotlarini bajargansiz, masalan har bir majburiyatda har doim o'rnatiladigan kod mavjud. Xabarnomada siz o'zgartirgan narsalar ko'rsatilgan bo'lishi kerak. "

Rivojlanish bo'limiga kirish log

Men - “Ha, men rivojlanayotgan filialda jami to'rtta topshiriq olganman. Bitta majburiyat loyihani qurishga imkon berish edi. Uchta xizmat qo'ng'irog'ining har biri uchun bitta var. "

Git - “Zo'r! Siz eng yaxshi amaliyotlarni to'g'ri bajarganga o'xshaysiz. Loyihani barqarorlashtirish uchun pack.json-ni eng so'nggi versiyalaridan yarataylik. Yangilanish filialiga borib, pack.json - pack-copy.json dublikatini oling. Endi Git o'rniga foydalanish, / pack.json-ni develop / pack.json bilan yangilang va pack.json va pack-copy.json o'rtasidagi farqni ishlating. Jonli kod ba'zi paketlarni o'zgartirgan va turli xil versiyalarga ega bo'lganligi sababli siz diffga qarab yangilashingiz kerak bo'ladi. "

Loyihani qurishga imkon berish

Men - “Meni sinab ko'rishga ijozat bering. OK qurmoqda va ishlamoqda. ”

Git - "Ajoyib! Endi xizmat qo'ng'iroqlari ustida ishlaylik. Rivojlanish bo'limida har bir qo'ng'iroq o'zgarishi uchun bitta majburiyat borligini ko'raman. Gilosni terish vaqti keldi. Eng murakkab xizmat qo'ng'irog'idan eng murakkab qo'ng'iroqni tanlang. Qarama-qarshiliklarni tanlang, birlashtiring va hal qiling. Gilos terib bo'lgandan keyin va har bir xarakatni amalga oshirishdan oldin loyihaning yaroqli holatida ekanligiga ishonch hosil qiling. ”

Men - “S1 bajarildi. S2 bajarildi. S3 bajarildi. Rahmat, Git ”

Git - “Xush kelibsiz! Siz o'zingiz Git amaliyotiga rioya qilgan holda Git-ga shunchaki kod saqlash sifatida qaramasdan o'zingizga yordam berdingiz. ”

Bu erda nima qildim?

Tegishli o'zgarishlarni qabul qilish

Bir lahzaga bir oz to'xtab turing va agar bu o'zgarish ushbu majburiyatni bajarishi kerak bo'lsa, o'ylab ko'ring. "O'zgartirish: service-s1 so'nggi nuqtalari" va service-s2-ning o'zgarishi haqida aytilgan majburiyat shunchaki chalkashlikni keltirib chiqaradi.

Yarim ishlarni bajarmang

Biz tez-tez "erta topshirmoq, ko'pincha majbur qilaman" mantrasini eshitganmiz. Yuqoridagi misolda siz bitta xizmatning turli xil so'nggi nuqtalari uchun bitta majburiyatga ega bo'lishingiz mumkin. Bunga kolbasa tayyorlash deyiladi.

Ammo, men git rebase interaktiv rejimidan foydalangan holda, kichik majburiyatlarimni buzaman. Bu menga bitta mantiqiy o'zgartirishga yordam beradi, uni sertifikatlash mumkin va bu ishonchli komissionerga sizning kodingizni ko'rib chiqishda yordam beradi. Bu keng ko'lamli loyihalar uchun afzalroqdir.

Ishga kirishdan oldin kodingizni sinab ko'ring

Biz Gitni davlat mashinasi deb o'ylashimiz kerak va har qanday mashina har qanday holatda moslashuvchan holatda bo'lishi kerak.

Yaxshi majburiyatli xabarlarni yozing

Bu eng muhim qism. Men har doim bir lahzaga to'xtab turaman va tushundimmi, deb o'ylayman - uch oydan so'ng - majburiyat to'g'risidagi xabarga qarab, bu majburiyatning o'zgarishi.

Xulosa

Men tartibsizlikni tezda hal qilishga muvaffaq bo'ldim. Men WTF va FML lahzalaridan chiqib ketishim mumkin edi, chunki men ba'zi yaxshi amaliyotlarga rioya qilganman. Ular biron bir sababga ko'ra mavjud va oziq-ovqat tarkibidagi tuzga o'xshaydi - siz ular ishlatilmaganda ularning qiymatini tushunasiz.

Xatolar ertami-kechmi, ongsiz ravishda ro'y beradi. Ammo Git atrofidagi ba'zi amaliyotlarni ongli ravishda bajarayotganingizga ishonch hosil qiling.

Men Git-ning semantik xabarlarini yoqtiraman, ular Git tarixini o'zgartirishga yordam beradi. Rostini aytsam, har bir xabar uchun hamma bir xil so'zlarni ishlatishini kuta olmaysiz. Biroq, xabar turini kutish mumkin.

Bu har bir majburiyatni bajargandan so'ng, sizning loyihangiz qurilishi mumkinligiga ishonch hosil qilishga yordam beradi - bu haqiqatan ham foydali.

VSCode Git-ni qo'llab-quvvatlaydi. Ziddiyatlarni ko'rish va ularni hal qilish, ba'zan bir marta bosish orqali juda oson bo'ladi. Quyidagi misolga qarang

Adabiyotlar

  • Eng yaxshi amaliyotlar
  • VSCode-da Super Ajoyib versiyani boshqarish integratsiyasi
  • Git Semantik Commit Xabarlar
  • Git Maslahat another: Boshqa filialdagi ma'lum fayllarni qanday "birlashtirish"
  • Git Maslahat : Git - git-gilos-hujjatlarni tanlash
  • Git Maslahat : Git - Git-Reset Documentation

Menga tarkibni yangilashda yordam bergan do'stlarim Saurabh Rajani va Anish Dhargalkarga alohida rahmat.