اشتباهات ساده Git که نباید انجام بدهید

استفاده از ابزارهای توسعه نرم‌افزار مانند گیت، برای راحتی کار مهندسان داده روی کار آمده‌اند اما امروزه افرادی با مشاغل غیر مهندسی نیز از سیستم‌های کنترل سورس مثل گیت و دیگر ابزارهایی که نیازمند نوشتن کد هستند، کمک می‌گیرند. به همین خاطر اشتباهاتی در این بین صورت می‌گیرد که افراد تازه‌کار را با مشکل مواجه می‌کند. برای جلوگیری از بروز اشتباهات git می‌توانید به بررسی موارد ساده و ابتدایی بپردازید و نکات لازم را رعایت کنید تا با هیچگونه مشکلی مواجه نشوید. ما در این مقاله قصد داریم شما را با اشتباهات ساده‌ای که نباید انجام دهید آشنا نموده و اصطلاحات لازم را برایتان شرح دهیم.

 

ویدیو پییشنهادی : آموزش Git
آموزش Git

 

افرادی که با گیت سر‌و‌کار دارند نیز با مشکلاتی مواجه می‌شوند که دلیل بروز این اشتباهات عدم داشتن اطلاعات کافی می‌باشد. از آنجایی که بسیاری از پروژه‌ها به صورت تیمی به انجام می‌رسند نمی‌توان عدم توانایی یا مهارت یک فرد را نادیده گرفت.

چراکه در انجام امور گروهی اثر کار هر فرد روی دیگری تاثیر می‌گذارد. افرادی که مهارت کد‌نویسی ندارند ممکن است هنگام انجام این کار دستورات ناصحیحی را در قالب اشتباهات git به انجام برسانند اما جدا از بحث کدنویسی ما در این مقاله قصد داریم شما را با مباحثی مثل ساختن کامیت‌های بزرگ یا کار کردن مستقیم روی شاخه مستر و دیگر اشتباهاتی که پایه منطقی دارند آشنا کنیم و راه حل مقابله با این اشتباهات را بیان نماییم.

اشتباهات ساده Git که نباید انجام بدهید

آیا تنها از شاخه مستر استفاده می‌کنید؟

اول از همه باید بدانید که گیت چه مفهومی دارد. هنگام کار روی پروژه‌ها نباید تنها از شاخه مستر استفاده کرد، در واقع سیستم‌های کنترل سورس آمده‌اند که هر کس بتواند یک شاخه منحصر به فرد داشته باشد و به ارسال کامیت‌ها در آن شاخه بپردازد تا در نهایت از بروز تداخل و هرگونه مشکل در انجام پروژه تیمی جلوگیری شود.

هر فرد در شاخه مختلفی می‌تواند به آزمایش قابلیت‌های ایجاد شده بپردازد و آن‌ها را پیاده سازی کند تا نتیجه دلخواه را از تغییرات به وجود آمده مشاهده نماید اما از شاخه مستر فقط برای نمایش سابقه پایداری کد استفاده می‌شود. هر یک از توسعه‌دهندگان می‌توانند پس از اطمینان حاصل کردن از میزان کارایی تغییرات ایجاد شده و قابلیت‌های تایید شده آن را در شاخه مستر قرار دهند.

 

مقاله پییشنهادی : منظور از گیت Git چیست
منظور از گیت Git چیست

 

در چنین شرایطی که هر فرد بهترین و صحیح‌ترین تغییرات را در شاخه مستر اعلام می کند، انتشار نسخه‌ها نیز به آسانی صورت گرفته و به راحتی کد شاخه مستر در اکثر موارد بدون هیچ گونه مشکل و اشتباهی بیلد می‌شود.

روش‌شناسی مشخص برای شاخه‌سازی

تا به اینجا متوجه شده‌اید که شاخه‌های مختلف برای انجام آزمایش و شاخه مستر برای بیلد کردن نسخه اصلی به کار گرفته می‌شود. یکی دیگر از مشکلاتی که ممکن است با آن مواجه شوید مربوط به مدیریت شاخه هاست.

Gitflow یکی از بهترین و متداول‌ترین روش‌هایی است که برای شاخه‌سازی به‌کار گرفته می‌شود و این روش برای همه افراد مناسب و قابل استفاده خواهد بود. افرادی که با نوشتن کد در محیط‌های مختلف سر‌و‌کار دارند یا حتی افرادی که مهندسان داده هستند و از روش دلخواه خود در انجام امور استفاده می‌کنند، در هر صورت Gitflow یک روش‌شناسی مشخص برای شاخه‌سازی در انجام کارهایشان محسوب می‌شود.

Gitflow متشکل از سطوح مختلفی از شاخه‌سازی به صورت master ،develop و feature می‌باشد که هر یک از این سطوح به صورت مستقل از هم تعریف شده‌اند.

آیا تنها از شاخه مستر استفاده می‌کنید؟

Gitflow چیست؟

اگر به صورت تیمی کار کرده باشید حتماً با مشکلاتی مثل Merge Conflict یا تداخل و همزمانی توسعه ویژگی‌ها آشنا هستید‌. اشتباهات git زمان زیادی از ما تلف کرده و روند انجام پروژه را کند می‌نمایند، در واقع برای ادغام کردن برنچ‌های مختلف و Deploy کردن آن‌ها زمان و حوصله زیادی نیاز خواهد بود.

GitFlow مفهومی برای مدیریت برنچ‌ها است که به ما اجازه می دهد بدون ایجاد هرگونه مشکل به توسعه پروژه خود بپردازیم و بتوانیم به طور همزمان روی ویژگی‌هایی که قرار است به پروژه اضافه شود، کار کنیم بدون آنکه مشکلی در جهت مرج یا لانچ کردن بخش های مختلف پیش بیاید.

‌Branch Model

با gitflow می‌توان اقدام به مدیریت محیط توسعه نمود و همچنین برنج‌ها را مدیریت کرد و برای Merge شدن Branch ها با هم از روش مناسبی استفاده نمود. پس از نصب گیت با اجرای دستور زیر می توانید آن را در پروژه خود به کار بگیرید. این روش شاخه‌سازی توسط Vincent Driessen ابداع شده و تا به امروز استقبال زیادی از این روش به انجام رسیده چراکه استفاده از آن برای مقیاس پذیری و همکاری در تیم توسعه بسیار کارآمد می‌باشد.

git flow init

مزیت‌های اصلی Gitflow

حال که با مفهوم گیت‌فلو آشنا شده‌اید و بخشی از اشتباهات git را درک کرده اید در این بخش قصد داریم به مزیت های اصلی Gitflow بپردازیم.

 

مقاله پییشنهادی : گیت هاب چیست؟
گیت هاب چیست؟

توسعه موازی

از مهم‌ترین نکاتی که در مورد گیت‌فلو مطرح است، این است که موجب می‌شود توسعه موازی کد تبدیل به یک عمل آسان شود. در واقع در این روش بخش‌های جدید از کار‌های پایان‌یافته جدا می‌شوند. برای توسعه قسمت‌های جدید مثل رفع اِرور‌ها و باگ‌ها، همچنین گسترش قابلیت‌ها، از شاخه feature استفاده می‌شود و وقتی کد به بدنه اصلی برگشته و با آن ادغام می‌شود که فرد یا افراد توسعه‌دهنده، مطمئن شوند کد برای انتشار آماده می‌باشد.

اگر چه به وجود آمدن وقفه در یک کار تیمی اصلا خوشایند نیست اما اگر از شما درخواست سوئیچ از کاری به کار دیگر بشود، تنها لازم به کامیت کردن تغییرات خودتان خواهید داشت و پس از آن می‌توانید برای کار جدید یک شاخه feature جدید بسازید. در نهایت وقتی کار جدیدتان پایان یافت، می‌توانید به انجام دادن ادامه کار خود، در شاخه فیچر اصلی بپردازید.

همکاری

برای تسهیل امور بین همکاران(چند توسعه‌دهنده) روی فیچر اصلی، میتوان از شاخه‌های feature استفاده نمود. در دوقع هر شاخه فیچر یک sandbox است که تنها شامل تغییراتی می‌شود که برای راه‌اندازی فیچر جدید مورد نیاز می‌باشند. به این ترتیب مشاهده و پیگیری کارهایی که هر یک از اعضای تیم انجام می‌دهند به آسانی امکان‌پذیر می‌شوند.

Gitflow چیست؟

ناحیه استیجینگ انتشار

وقتی توسعه بخش‌های جدید تمام شد، مجدداً در شاخه develop ترکیب می‌شود. ناحیه staging مخصوصِ همه فیچرهای تکمیل‌شده‌ای است که هنوز منتشر نشده‌اند.

پشتیبانی از اصلاحیه اضطراری

Staging از شاخه‌هایhotfix پشتیبانی می‌کند که این شاخه‌ها نیز ساخته شده از روی انتشارهای تگ‌خورده هستند. می‌توان برای ایجاد تغییرات ضروری از این شاخه‌ها استفاده نمو. به این ترتیب می‌توان مطمئن بود که hotfix فقط از اصلاحیه اضطراری تشکیل شده است. با این شرایط دیگر ریسک ادغام تصادفی در توسعه جدید از بین می‌رود.

طرز کار GitFlow چگونه است؟

ایجاد قابلیت‌های جدید و همچنین رفع اِرور و باگ‌های غیراضطراری منجر به توسعه کد جدید می‌شود که همه این اعمال در شاخه‌های feature ساخته می‌شوند.

 

مقاله پییشنهادی : نحوه نصب Git روی اوبونتو
نحوه نصب Git روی اوبونتو

 

شاخه‌های feature انشعاب گرفته از شاخه‌های Develop هستند. شاخه release نیز از شاخه های تکمیل‌شده و اصلاحیه‌های آماده‌ی انتشاری تشکیل شده است که در این محل با یکدیگر ادغام شده‌اند.

هر بار که قرار باشد یک نسخه جدید انتشار پیدا کند شاخه release از روی develop ایجاد می شود .

اگر مشکلی وجود داشته باشد مستقیماً در شاخه release اصلاحیه انجام شده و اقدامات لازم صورت می‌گیرد. در واقع کد‌ها روی شاخه release آماده تست و توزیع می‌شوند و در همین محیط همه اقدامات لازم به انجام می رسد.

در نتیجه می‌توان گفت که تا زمان انتشار نسخه اصلی و نهایی چرخه زیر ادامه می‌یابد

 

 

پس از پایان انتشار در شاخه‌های master و develop شاهد ادغام شدن شاخه release خواهیم بود. به این ترتیب می‌توانیم مطمئن شویم که تغییرات صورت گرفته در این شاخه بر اثر توسعه کد جدید به صورت اتفاقی از بین نرفته‌اند.

در چنین شرایطی شاخه master فقط برای ردگیری کدهای منتشر شده مورد استفاده قرار می‌گیرد پس فقط از طرف شاخه‌های release و hotfix به master کامیت ارسال می‌شود.

در چنین شرایطی انتشارات شامل تگ، به طور مستقیم در شاخه master منشعب شده و در صورت پایان یافتن، مجدداً در هر دو شاخه ادغام خواهند شد.( master و develop) به این ترتیب می‌توانیم اطمینان حاصل کنیم که hotfix به صورت تصادفی در زمان انتشار نسخه بعدی از بین نرفته است.

کامیت کردن هزار فایل در یک کامیت

با کامیت کردن فایل‌های زیاد در یک کامیت، اشتباه فنی رخ نمی‌دهد اما در کل این رویه چندان مناسب و خوشایند نیست. کامیت اولیه که در ریپازیتوری قرار می گیرد بحث جداگانه‌ای دارد اما دیگر کامیت‌ها تنها باید شامل تغییراتی باشند که قابل توضیح در یک خط بوده و تمام توضیحات نیز باید در همین سطر کوتاه درج شوند.

در مجموع روند کامیت کردن باید به این صورت باشد که همواره این عمل به انجام رسیده اما طول آن متناسب با قوانین، کوتاه باشد. برای این منظور می توانید پس از انجام هر نوع تغییر کوچکی اقدام به یک کامیت مناسب نمایید.

در مجموع…

در مجموع باید بدانید که گیت نیز مثل دیگر فناوری‌هایی که امروزه کاربرد زیادی دارند، مبحثی است که حتماً باید نسبت به آن آگاهی داشته باشید و با دانش کافی به استفاده از آن بپردازید. با انجام اشتباهات git ممکن است روند انجام یک پروژه را کند کرده یا برای آن مشکلاتی را ایجاد کنید که بهره‌وری کار شما را کاهش دهد. بنابراین یادگیری گیت از همان پایه و مبانی ابتدایی گرفته تا دستورات پیچیده‌تر و نوشتن کدهای کاربردی‌تر، برای همه افرادی که با سیستم‌های کنترل سورس کار می کنند، امری ضروری محسوب می‌شود.