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