Git Merge | ادغام شاخه ها درگیت
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
Git Merge عملیاتی در گیت که به منظور ترکیب تغییرات و تاریخچه یک شاخه (Branch) در شاخهای دیگر استفاده میشود. این کار معمولاً برای انتقال کدهای نهایی شده از یک محیط ایزوله به شاخه اصلی پروژه انجام میگیرد.
-
Isolation توسعه کد در یک برنچ جداگانه برای جلوگیری از ایجاد اختلال در کد اصلی پروژه. این کار اجازه میدهد فیچرهای مختلف بدون تاثیر مخرب بر یکدیگر توسعه یابند.
-
Destination Branch شاخهای که قرار است تغییرات جدید را دریافت کند (مقصد). برای انجام مرج، ابتدا باید به این شاخه سوئیچ کرد.
-
Merge Conflict وضعیتی که در آن گیت نمیتواند به صورت خودکار تغییرات دو شاخه را ترکیب کند؛ این اتفاق زمانی رخ میدهد که در هر دو شاخه، خطوط یکسانی از یک فایل تغییر کرده باشند.
-
Fast-Forward نوعی از مرج که در آن شاخه مقصد هیچ تغییری نسبت به نقطه جدایی برنچ جدید نداشته و گیت صرفاً اشارهگر شاخه مقصد را به آخرین کامیت شاخه جدید منتقل میکند.
نکات مهم مصاحبهای
-
برای مرج کردن یک شاخه به شاخه اصلی چه مراحلی باید طی شود؟ ابتدا باید با دستور
git checkoutبه شاخه مقصد (مثلاًmaster) رفت و سپس دستورgit merge <branch-name>را اجرا کرد تا تغییرات شاخه منبع به مقصد منتقل شود. -
چه زمانی Merge Conflict رخ میدهد و چگونه حل میشود؟ زمانی که دو نفر روی یک خط مشخص از یک فایل در دو شاخه متفاوت کار کرده باشند و بخواهند آنها را مرج کنند. برای حل آن، باید فایل را باز کرده، کد درست را انتخاب و بخشهای اضافی گیت را پاک کرد، سپس فایل را
addوcommitنمود. -
چرا پیشنهاد میشود شاخه اصلی (Main/Master) را به صورت منظم در شاخه فیچر خود مرج کنیم؟ برای اینکه شاخه ما همیشه با آخرین تغییرات تیم بهروز باشد. این کار باعث میشود تداخلها (Conflicts) به جای انباشته شدن، به صورت تدریجی و در حجم کمتر شناسایی و حل شوند.
-
آیا مرج فقط با شاخههای اصلی ممکن است؟ خیر، شما میتوانید هر دو شاخهای را با هم مرج کنید؛ لزوماً یکی از آنها نباید
masterیاmainباشد.
مثال یا سناریوی کاربردی
فرض کنید روی شاخه master هستید و میخواهید متدی را اکسترکت کنید:
- یک شاخه جدید به نام
feature-printمیسازید و به آن سوئیچ میکنید. - کد خود را تغییر داده و یک
commitثبت میکنید. - به شاخه
masterبازمیگردید. در این لحظه تغییرات درmasterدیده نمیشود. - دستور
git merge feature-printرا اجرا میکنید. اکنون تغییرات بهmasterاضافه شده است. - در نهایت با دستور
git branch -d feature-printشاخه اضافی را حذف میکنید تا محیط کار خلوت بماند.
بیشتر بدانید
-
نکته امنیتی همیشه قبل از شروع عملیات مرج، مطمئن شوید که وضعیت محیط استیج (
git status) تمیز است و تغییرات ذخیره نشده ندارید، زیرا وجود فایلهای کامیت نشده میتواند فرآیند مرج را با پیچیدگی مواجه کند. -
مدیریت پروژه در محیطهای تیمی، برنچهایی که کارشان تمام شده و مرج شدهاند را حذف کنید. این کار از سردرگمی در مدیریت تعداد زیادی برنچ قدیمی جلوگیری میکند.
