استراتژی مناسب گیت

خیلی از ما تو پروژه هامون از سیستم ورژن کنترل - گیت - استفاده می‌کنیم. استفاده بهینه از هر ابزاری باعث کاهش خطا و همچنین افزایش کیفیت میشه. گیت هم یکی از پرکاربردترین ابزارهای توسعه دهندگان محسوب میشه. تو این نوشته در مورد یکی از روش های مرسوم مدیریت برنچ هامون صحبت می‌کنم.به نظرتون بهترین روش برای مدیریت برنچ هامون چیه؟‌تیم های بزرگ از چه روشی برای مدیریت برنچ هاشون استفاده می‌کنن که کمترین کانفلیکت به وجود بیاد؟‌استراتژی مناسب گیتبهترین استراتژی مدیریت برنچ ها که برای استفاده از گیت توصیه میشه به این شکل هست:۱- برنچ اصلی با نام master۲- برنچ اصلی توسعه با نام develop (فقط یک برنچ)۳- برنچ های توسعه با پیش وند feature (به هر تعداد که لازم باشه)۴- برنچ توسعه اضطراری hotfix (که به نسبت بقیه برنچ ها کمتر استفاده میشه)۵- برنچ انتشار realse به شکل زیر دقت کنید:انواع شاخه های اصلی گیتبریم برنچ های پرکاربرد شکل بالا رو بررسی کنیم:برنج اصلی masterفرض کنید که کدهای سایت ویرگول روی ورژن کنترل گیت قرار گرفته. همون کدی که دقیقا الان در حال اجراست و روی اینترنت در دسترس همگان هست روی این برنچ قرار گرفته. هیچ برنامه نویسی حق کامیت و پوش کردن مستقیم روی این برنچ رو نداره ! و همون طور هم که انتظار میره از این برنچ فقط یکی در کل پروژه داریم و کسی نباید اسم اون رو تغییر بده و یا اینکه برنچ دیگه ای با همین اسم بسازه.برنچ مستر به صورت پیش فرض موقع مقدار دهی اولیه گیت ، توسط خود گیت ساخته میشه !برنچ توسعه developبعد از برنچ اصلی master برنچ develop حائز اهمیت هست. کار این برنچ در واقع نگهداری کدهای جدید و اضافه کردنش به master هست.فرض کنید شما پروژه ویرگول رو به جایی رسوندین که اجرایی شده و کدهاتون رو روی سرور قرار دادین ( به اصطلاح بالا بردید) حالا مدیر تیم فنی باگ ها و فیچر های جدیدی که لازم هست اضافه بشه رو به تیم فنی اعلام می‌کنه . خوب قرار نیست هر کاری که می‌کنیم و هر کامیتی که می‌کنیم به سرعت روی سرور اصلی قرار بدیم. برای اینکه با برنچ develop بیشتر آشنا بشید باید برنچ ویژگی ها feature رو هم مطالعه کنید. ادامه مثالی که زدم اونجاست!برنچ ویژگی‌ها feature خوب تو مثالی که تو برنچ develop زدم لازم هست که یک سری باگ ها اصلاح بشه و یا اینکه ویژگی های جدیدی به پروژه اضافه بشه.‌ اینجاست که باید از برنچ develop یه برنچ دیگه به اسم feature ساخت و اونجا کارهای لازم رو انجام داد. بعد از اینکه کارمون تو برنچ feature تموم شد و کامیت های مناسب رو نوشتیم حالا برنچ feature رو با برنچ develop مرج می‌کنیم!خیلی از شرکت ها این کارو می‌کنن و خیلی های دیگه یک نفر مسئول گیت (system owner) دارند و شما به جای اینکه merge کنید‌، باید merge request بدید و کدتون رو push کنید تا بعد از بررسی و review اون رو روی develop مرج کنه!خوب فرض کنید که تو یک هفته و با کار هم تیمی هاتون ۱۰ تا فیچر مختلف رو تموم کردید و کلی باگ هم فیکس کردین. حالا مدیر فنی تصمیم می‌گیره که تغییرات جدید رو به سرور اصلی اضافه کنه و به اصطلاح کدها رو بالا ببره!خوب میاد برنچ develop رو با برنچ master مرج می‌کنه و همه تغییرات جدید رو به برنچ اصلی master انتقال میده !‌ (در صورتی که برنچ realese وجود نداشته باشه)در این لحظه برنچ develop و مستر باهم یکی هستند !ابزار گیتفرض کنید که شما بخواهید از برنچ develop یک برنچ ویژگی ( مثلا fixTypo )‌ بسازید و بعد از اینکه کارتون تموم شد اون رو با برنچ develop مرج کنید.مراحلی که باید انجامش بدیم ( با فرض اینکه الان توی برنچ develop هستید):۱- ساختن یک برنچ جدید مثلا feature/fixTypo۲- انجام تغییرات لازم در کدها۳- چک اوت به برنچ develop۴- مرج کردن برنچ feature/fixTypo با develop۵- پوش کردن برنچ develop ۶ـ حذف کردن برنچ feature/fixTypoخوب برای اینکه راحت تر بتونیم از روش مدیریت برنچ ها در گیت استفاده کنیم، ابزاری بسیار کارآمد به اسم گیت فلو وجود داره که کار رو برای ما ساده تر هم می‌کنه ! https://virgool.io/@novonimo/مکمل-قردتمند-گیت-git-flow-ufhgxx6j6ah3 ابزار قدرتمند گیت فلو به سادگی روی ترمینال شما نصب میشه و با اضافه شدن به گیت مراحل بالارو به این شکل انجام میده:۱- ساختن یک برنچ ویژگی جدید۲- انجام تغییرات لازم در کدها۳- فینش کردن برنچ ویژگی جدید۴- پوش کردن برنچ developدرسته که به لحاظ تعداد مراحل فقط ۲ مرحله کم شده ولی به نوع دستورات دقت کنید. در سناریو معمولی گیت:git branch -b feature/fixTypo ** do some changes on code base ** git checkout develop git merge develop feature/fixTypo git push origin develop git branch -D feature/fixTypoبا استفاده از گیت فلو:git flow feature start fixTypo ** do some changes on code base ** git flow feature finish fixTypo git push origin developخیلی ساده شد، نه ؟‌سایر مقاله های من در ویرگول: https://virgool.io/programmers-revolution/بهترین-تمرین-های-گیت-wgjeggzbq1gj http://vrgl.ir/4ip6V Contact With me:https://t.me/nimamohamadianhttps://www.facebook.com/nimamohamadian89https://twitter.com/Nima_Mohamadianhttps://www.linkedin.com/in/nima-mohamadian-57ba63123