وقتی گیت نمیتواند خودکار تصمیم بگیرد
تعارض یا conflict زمانی رخ میدهد که دو شاخه، یک بخش از یک فایل را بهشکل متفاوتی تغییر داده باشند و گیت نتواند بهتنهایی تصمیم بگیرد کدام نسخه درست است. این اتفاق معمولاً هنگام merge یا rebase رخ میدهد و کاملاً طبیعی است، بهخصوص در تیمهای چندنفره.
وقتی conflict رخ دهد، گیت فایل مربوطه را با علامتهای ویژه مشخص میکند:
<<<<<<< HEAD
قیمت محصول: ۵۰۰۰۰ تومان
=======
قیمت محصول: ۴۵۰۰۰ تومان
>>>>>>> feature/discount
بخش بالای ======= نسخهی شاخهی فعلی شماست و بخش پایین نسخهی شاخهای است که در حال merge کردن آن هستید. برای حل تعارض باید فایل را دستی ویرایش کنید، نسخهی نهایی درست را بنویسید و تمام علامتهای <<<<<<<، ======= و >>>>>>> را حذف کنید. سپس فایل را add و commit میکنید تا merge کامل شود:
git add price.py
git commit
اگر در وسط یک merge یا rebase پشیمان شدید، میتوانید با git merge --abort یا git rebase --abort به وضعیت قبل از شروع عملیات برگردید. بهترین راه برای کاهش تعارضها، commitهای کوچک و مکرر، ارتباط تیمی خوب دربارهی اینکه هرکس روی کدام بخش کار میکند، و merge کردن مکرر main در شاخههای طولانیمدت است.