رفع تداخلها (Fix Conflicts) در Git
🔹 تداخل (Conflict) چیست؟
- وقتی چند تغییر همزمان روی یک فایل یا یک خط از کد اعمال میشه (مثلاً در merge یا rebase)، گیت نمیدونه کدوم تغییر درسته.
- در این حالت Conflict ایجاد میشه.
🔹 موقعیتهایی که تداخل پیش میاد:
- Merge → ادغام دو شاخه که تغییرات مشابهی روی فایل دارند.
- Rebase → بازنویسی تاریخچه و جابجایی commitها.
- Cherry-pick → وقتی commit خاصی روی شاخهی دیگری اعمال میشه.
🔹 نشانههای Conflict:
- گیت فایلها رو با نشانههای خاصی علامتگذاری میکنه:
<<<<<<< HEAD کدی که تو شاخهی فعلی هست ======= کدی که از شاخهی دیگر اومده >>>>>>> branch-name
🔹 مراحل رفع Conflict:
اجرای دستور و مشاهده وضعیت:
git status
→ فایلهایی که conflict دارن مشخص میشن.
- باز کردن فایل و ویرایش دستی:
- انتخاب یا ترکیب بخش درست از تغییرات.
- پاک کردن نشانههای <<<<<<<, =======, >>>>>>>.
علامتگذاری فایل به عنوان حلشده:
git add <filename>
- ادامهی عملیات:
اگر merge بوده:
git commit
اگر rebase بوده:
git rebase --continue
🔹 ابزارهای کمکی:
- VS Code → بهطور خودکار پیشنهاد انتخاب تغییرات میده.
- git mergetool → ابزار گرافیکی برای مدیریت تداخل.
👉 نتیجه: رفع conflict یعنی مشخص کردن اینکه کد نهایی باید شامل کد کدوم بخش (یا ترکیبی از هر دو) باشه و سپس ادامه دادن فرآیند.