تطوّر على فرع. تقدّم main. كيف تدمج؟
A---B---C main
/
D---E feature-branchخياران:
أيهما تختار؟ يعتمد على هدفك!
git checkout main
git merge feature-branch A---B---C-------M main
/ /
D---E-----------/ (M = merge commit)git checkout feature-branch
git rebase main A---B---C---D'---E' main| المعيار | الدمج | إعادة الأساس |
|---|---|---|
| السجل | يحفظ الفروع المتوازية | يجعل كل شيء خطّياً |
| الإيداعات | يضيف إيداع دمج | يعيد كتابة الإيداعات |
| التعقيد | بسيط (أمر واحد) | أعقد |
| التعارضات | حل واحد كحد أقصى | عدة حلول ممكنة |
| الأمان | آمن جداً | خطير إن أُسيء استخدامه |
| القابلية للتتبّع | ترى متى أُنشئت الفروع ودُمجت | تفقد المعلومة الزمنية |
| التعاون | مثالي للفريق | انتبه للإيداعات المشتركة |
| القابلية للقراءة | معقّد مع كثرة الفروع | واضحة جداً وخطّية |
الأوضاع:
الأوامر:
git checkout main
git pull origin main
git merge feature-branch
git push origin mainالأوضاع:
الأوامر:
git checkout feature-branch
git rebase main # حل التعارضات إن لزم
git checkout main
git merge feature-branch # Fast-forward merge
git push origin main
```
### **القاعدة الذهبية:**
**لا تعِد أساساً لإيداعات مشتركة أبداً!**
```bash
# خطر - لا تفعل هذا أبداً:
git push origin feature-branch # إيداعات مشتركة
git rebase main # إعادة كتابة إيداعات مشتركة = فوضى الفريق
# مقبول - إعادة أساس محلية فقط:
git rebase main # إيداعات ما زالت محلية = مقبول
git push origin feature-branch # دفع بعد إعادة الأساس = مقبول| المستوى | الاستراتيجية الموصى بها |
|---|---|
| مبتدئ | دائماً الدمج |
| متوسط | الدمج للتعاون، إعادة الأساس للتنظيف المحلي |
| خبير | يقرّر الفريق استراتيجية متسقة |
المهم = الاتساق داخل الفريق، لا الكمال التقني!