Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Git Merge

آخر تحديث

git merge يجلب الـ commits من فرع آخر إلى فرعك الحالي. عندما لا يكون الفرع الحالي قد تباعد، ينفّذ Git عملية fast-forward - أي مجرد تحريك المؤشر إلى الأمام. عندما يحتوي كلا الفرعين على commits جديدة، ينشئ Git عملية دمج (merge commit) تربط التاريخين معًا. على عكس rebase، يحافظ merge على التاريخ الدقيق لكلا الفرعين.

جرّب هذه الأوامر في ساحة الطرفية - صدفة حقيقية في متصفحك، لا شيء لتثبيته.

الصياغة

CommandWhat it does
git merge featureدمج feature في الفرع الحالي
git merge --no-ff featureإنشاء merge commit دائمًا
git merge --ff-only featureالدمج فقط إذا كان بالإمكان تنفيذ fast-forward
git merge --squash featureدمج commits الفرع في commit واحد
git merge --abortإلغاء عملية دمج بها تعارضات

Fast-forward vs merge commit

ScenarioFast-forwardMerge commit (--no-ff)
ينشئ commit جديدًالانعم
يحتفظ بسجل للفرعلانعم
يحدث عندمالم يتباعد الفرع الحالييحتوي كلا الفرعين على commits جديدة

حل تعارض الدمج

عندما يغيّر كلا الفرعين الأسطر نفسها، يتوقف Git مؤقتًا.

StepCommandResult
1حرّر الملفات المتعارضةاختر الأسطر الصحيحة، وأزل العلامات
2git add <file>وضع علامة على التعارض كمحلول
3git commitإكمال عملية الدمج

أسئلة شائعة حول git merge

كيف أدمج فرعًا في فرع آخر في Git؟
انتقل إلى الفرع الذي تريد الدمج فيه (مثل git switch main)، ثم نفّذ git merge feature. يدمج Git الـ commits من feature في main، إما عبر fast-forward أو بإنشاء merge commit إذا كان كلا الفرعين قد تباعدا.
ما الفرق بين fast-forward وmerge commit؟
يحدث fast-forward عندما لا يكون فرعك الحالي قد تحرك منذ أن تفرّع الفرع الآخر - يكتفي Git بتحريك المؤشر إلى الأمام دون إنشاء commit جديد. أما merge commit فيُنشأ عندما يحتوي كلا الفرعين على commits جديدة، فيربط تاريخيهما معًا. استخدم --no-ff لإنشاء merge commit دائمًا، أو --ff-only لاشتراط fast-forward.
كيف أحل تعارض الدمج؟
عندما يحدث تعارض في الدمج، يضع Git علامات على الأقسام المتعارضة في الملفات المتأثرة باستخدام العلامات <<<<<<< و======= و>>>>>>>. حرّر كل ملف للإبقاء على المحتوى الصحيح وإزالة العلامات، ثم نفّذ git add على الملفات المحلولة وgit commit لإنهاء الدمج.
كيف أتراجع عن عملية دمج أو ألغيها؟
إذا كانت عملية الدمج لا تزال جارية (تعارضات غير محلولة)، نفّذ git merge --abort لإلغائها واستعادة الحالة السابقة للدمج. إذا اكتمل الدمج محليًا بالفعل، فإن git reset --hard ORIG_HEAD يعيد الفرع إلى موضعه قبل الدمج (وعلى عكس HEAD~1، يعمل بشكل صحيح أيضًا بعد fast-forward - لكنه يتجاهل العمل غير المودَع). أما إذا كان الدمج قد دُفع، فاستخدم git revert -m 1 <merge-hash>.
هل يمكنني التدرب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل git merge في صدفة حقيقية داخل متصفحك - لا شيء لتثبيته. كما يغطي مساق Git التفاعلي المجاني من Coddy الدمج وحل التعارضات خطوة بخطوة.
Coddy programming languages illustration

تعلّم Git مع Coddy

ابدأ الآن