طريقة دمج فرع في فرع آخر في Git
يتطلب الدمج أمرين، لكن اتجاهه يربك كثيرين، وقد ينفذ Git تقديمًا سريعًا أو ينشئ إيداع دمج. إليك التسلسل الصحيح، ومعنى التقديم السريع، والخيار المناسب لكل حالة.
بقلم Kodmora
شركة البرمجيات المطوّرة لـGitTree
- الدمج
- الفروع
- تعارضات الدمج
في هذه الصفحة
لدمج `feature` في `main`، انتقل إلى الفرع الذي يستقبل الإيداعات، ثم ادمج الآخر: `git switch main` ثم `git merge feature`. الفرع الذي تقف عليه هو الذي يتغير. إن لم يكن في main إيداعات جديدة، يقدّمه Git تقديمًا سريعًا. وإلا فينشئ إيداع دمج، ويتوقف إذا تعارض الطرفان.
كيف أدمج فرعًا خطوة بخطوة؟
# get the latest
git fetch origin
# go to the branch that receives the work
git switch main
git pull --ff-only
# bring the other branch in
git merge feature/search
# publish it
git pushابدأ من شجرة نظيفة: أودِع أو خبّئ أولًا. وإن غيّرت رأيك في منتصف الطريق، يعيدك `git merge --abort`.
في أي اتجاه يسير الدمج؟
يعني git merge X دائمًا «أحضر X إلى الفرع الذي أقف عليه». فدمج feature في main يتم من main، أما تحديث feature بأحدث main فيتم من feature:
# keep a feature branch up to date
git switch feature/search
git fetch origin
git merge origin/mainما هو الدمج بالتقديم السريع؟
إذا لم يكن في الفرع المستقبل إيداعات خاصة به منذ انفصال الفرع الآخر عنه، فلا شيء يحتاج إلى جمع. ينقل Git مؤشر الفرع إلى أحدث إيداع في الفرع الآخر دون إضافة إيداع دمج، فيبقى السجل خطًا مستقيمًا. ويطبع Git كلمة Fast-forward عند حدوث ذلك.
# before
main: A---B
\
feature: C---D
# after a fast-forward merge
main: A---B---C---Dوعندما يكون لدى الفرعين إيداعات جديدة، يتعذر التقديم السريع، فينشئ Git إيداع دمج له أبوان. ويعرض درس التقديم السريع ودرس دمج الفروع المتباعدة الحالتين عمليًا.
ماذا تفعل --ff-only و--no-ff و--squash؟
| الخيار | النتيجة | استخدمه عندما |
|---|---|---|
| (دون خيار) | تقديم سريع إن أمكن، وإلا فإيداع دمج | معظم عمليات الدمج اليومية |
--ff-only | تقديم سريع، أو يتوقف بخطأ | تحديث main من المستودع البعيد |
--no-ff | إيداع دمج دائمًا | تريد ظهور كل ميزة في السجل |
--squash | كل التغييرات مُجهَّزة، دون إيداع ودون تسجيل دمج | تريد إيداعًا واحدًا مرتبًا |
git merge --ff-only origin/main
git merge --no-ff feature/search
git merge --squash feature/search
git commit -m "feat(search): quick open"ماذا يحدث عند تعارض الدمج؟
يتوقف Git ويعلّم الملفات المتعارضة. حرّرها، ونفّذ git add على كل منها، ثم git commit لإنهاء الدمج. ويشرح مقال حل تعارضات الدمج العلامات.
هل يمكنني اختيار أحد الطرفين تلقائيًا؟
# take their side wherever hunks conflict
git merge -X theirs feature/search
# take our side wherever hunks conflict
git merge -X ours feature/search
# during a merge, take one side of a whole file
git checkout --theirs path/to/file
git add path/to/fileهل أدمج أم أعيد التأسيس؟
يحفظ الدمج السجل كما حدث ولا يعيد كتابة الإيداعات، فهو آمن دائمًا على الفروع المشتركة. أما إعادة التأسيس فتعيد تطبيق إيداعاتك فوق فرع آخر لتحصل على خط مستقيم، لكنها تعيد كتابتها، فاقصرها على الفروع التي تستخدمها وحدك. ويستعرض درس الدمج وإعادة التأسيس المقارنة بينهما.
ماذا أفعل بعد الدمج؟
# check that the branch is fully merged
git branch --merged
# delete it locally and on the remote
git branch -d feature/search
git push origin --delete feature/searchيشرح مقال طريقة حذف فرع خطوات التنظيف. وللتراجع عن دمج مدفوع بالفعل، راجع طريقة التراجع عن إيداع دمج.
طريقة دمج فرع في GitTree
انتقل إلى الفرع المستقبل
انقر نقرًا مزدوجًا على الفرع الذي سيستقبل الإيداعات، مثل
develop.اختر الفرع المراد دمجه
انقر بزر الفأرة الأيمن على عنوان الفرع الذي فيه العمل الجديد واختر دمج … في …. ويمكنك أيضًا سحب عنوان وإفلاته على الآخر.
اقرأ المعاينة
يفحص GitTree أولًا ويخبرك يتم الدمج دون تعارضات. أو يذكر الملفات التي ستتوقف عند تعارض.
اختر طريقة التسجيل
تحت طريقة التسجيل، اختر تقديم سريع إن أمكن، وإلا فإيداع دمج أو إيداع دمج دائمًا أو تقديم سريع فقط أو ضمّ في التغييرات المُجهَّزة (بلا إيداع)، ثم اضغط دمج.

راجع دمج الفروع لكل الخيارات.
الأسئلة الشائعة
هل يحذف الدمج الفرع الآخر؟
لا. يبقى الفرع الآخر في مكانه تمامًا. احذفه بنفسك عندما تنتهي الحاجة إليه.
كيف أدمج فرعًا في main على GitHub؟
افتح طلب سحب واضغط Merge. وإن دمجت محليًا، فادفع main بعد ذلك. وقد تفرض حماية الفرع المرور عبر طلب السحب.
ماذا تعني رسالة Already up to date؟
الفرع الذي تقف عليه يحوي كل إيداعات الفرع الآخر، فلا شيء يُدمج. تأكد أنك على الفرع الصحيح، ونفّذ git fetch إن كنت تتوقع إيداعات بعيدة جديدة.
ماذا تعني رسالة refusing to merge unrelated histories؟
لا يجمع الفرعين أي إيداع مشترك، وغالبًا لأن المستودع هُيّئ مرتين. إن كنت تقصد ربطهما فعلًا، فأضف --allow-unrelated-histories.
هل الدمج بالضم دمج حقيقي؟
يجهّز الضم التغييرات المجمّعة دون إنشاء إيداع أو تسجيل صلة دمج في التاريخ. عليك إنشاء الإيداع بنفسك. وحتى بعده، لا يسجّل Git أن الفرع المصدر دُمج، لذا قد يرفض git branch -d حذفه.
المصادر
تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 8 نوفمبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.
