تخطَّ إلى المحتوى
GitTree
شروحات Gitقراءة في 4 دقائق

طريقة دمج فرع في فرع آخر في 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؟

كيف يسجل git merge النتيجة
الخيارالنتيجةاستخدمه عندما
(دون خيار)تقديم سريع إن أمكن، وإلا فإيداع دمجمعظم عمليات الدمج اليومية
--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

  1. انتقل إلى الفرع المستقبل

    انقر نقرًا مزدوجًا على الفرع الذي سيستقبل الإيداعات، مثل develop.

  2. اختر الفرع المراد دمجه

    انقر بزر الفأرة الأيمن على عنوان الفرع الذي فيه العمل الجديد واختر دمج … في …. ويمكنك أيضًا سحب عنوان وإفلاته على الآخر.

  3. اقرأ المعاينة

    يفحص GitTree أولًا ويخبرك يتم الدمج دون تعارضات. أو يذكر الملفات التي ستتوقف عند تعارض.

  4. اختر طريقة التسجيل

    تحت طريقة التسجيل، اختر تقديم سريع إن أمكن، وإلا فإيداع دمج أو إيداع دمج دائمًا أو تقديم سريع فقط أو ضمّ في التغييرات المُجهَّزة (بلا إيداع)، ثم اضغط دمج.

دمج feature/search في develop في GitTree، مع فحص التعارضات قبل أي تغيير.
دمج feature/search في develop في GitTree، مع فحص التعارضات قبل أي تغيير.واجهة 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. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.