جلسه شماره 48رایگان

Git Merge | ادغام شاخه ها درگیت

00:36:30

توضیحات جلسه

🎥 این ویدیو قسمت چهل و هشتم از بوت‌کمپ رایگان جاواست. 📚 Git – آشنایی کامل با Merge در گیت در این جلسه وارد یکی از مهم‌ترین مفاهیم Git می‌شویم: Merge. وقتی با شاخه‌های مختلف کار می‌کنید، در نهایت نیاز دارید تغییرات آن‌ها را با هم ترکیب کنید؛ این وظیفه‌ای است که دستور git merge بر عهده دارد و نقش کلیدی در مدیریت پروژه‌های واقعی و همکاری تیمی ایفا می‌کند. در این ویدیو یاد می‌گیری: - Merge چیست و چه جایگاهی در Git دارد - چگونه شاخه‌ها را با یکدیگر ادغام کنیم - نحوه برخورد با Conflict‌ها هنگام Merge - نکات و Best Practiceهای مهم برای داشتن Merge تمیز و قابل‌اعتماد - مرور کامل مباحث برای تثبیت بهتر مطالب 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی، می‌تونی داخل گروه بپرسی؛ من یا مربی‌های گروه کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار

جزوه و مستندات

مفاهیم کلیدی

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 شده‌اند حذف کنید. این کار از سردرگمی در مدیریت تعداد زیادی شاخه قدیمی جلوگیری می‌کند.