كيف يمكنني دمج عدة Commits في Git؟
Git هو واحد من أقوى أدوات إدارة الإصدارات التي يعتمد عليها المطورون في جميع أنحاء العالم. أحد المواقف الشائعة التي قد تواجهها أثناء العمل مع Git هو الحاجة إلى دمج عدة commits في واحد. هذا الإجراء يُعرف بـ Squash commits. في هذه المقالة، سنتعرف على كيفية القيام بذلك بالتفصيل.
ما هو دمج Commits في Git؟
دمج commits يعني أنك تقوم بتقليل عدد commits في مستودعك عن طريق دمج محتوياتها في commit واحد. يتم استخدام هذه العملية بشكل أساسي لتنظيف تاريخ المشروع قبل دمج فرع معين مع الفرع الرئيسي (main
أو master
).
لماذا تحتاج إلى دمج Commits؟
- لتبسيط سجل التاريخ وجعله أكثر قابلية للقراءة.
- لإزالة الأخطاء أو التجارب غير الضرورية أثناء التطوير.
- لتقليل عدد التغييرات المكررة وغير المفيدة في المستودع.
دمج commits يساعد في تحسين جودة الكود وجعل المشروع أكثر تنظيماً، خاصةً عند العمل في فرق كبيرة أو على مشاريع طويلة الأمد.
خطوات دمج عدة Commits في Git
1. التحقق من السجل الحالي (Git Log)
قبل دمج commits، من المهم أن تعرف الوضع الحالي للتاريخ. يمكنك استخدام الأمر التالي لعرض السجل:
git log --oneline
سيعرض هذا الأمر قائمة commits بطريقة مختصرة، حيث يظهر معرف commit (SHA) مع الرسالة.
2. اختيار الطريقة المناسبة للدمج
هناك طريقتان أساسيتان لدمج commits:
- Interactive Rebase
- Soft Reset
أ. استخدام Interactive Rebase
هذه الطريقة الأكثر شيوعاً والأكثر مرونة. قم بتنفيذ الأمر التالي لبدء عملية rebase التفاعلي:
git rebase -i HEAD~n
في هذا الأمر، استبدل n
بعدد commits التي تريد دمجها. على سبيل المثال، إذا كنت تريد دمج آخر ثلاثة commits، استخدم HEAD~3
.
كيف تعمل هذه الطريقة؟
عند تنفيذ الأمر، سيُفتح محرر النصوص الافتراضي لديك، وسيظهر شيء مشابه لما يلي:
pick a1b2c3 Commit message 1
pick d4e5f6 Commit message 2
pick g7h8i9 Commit message 3
لتجميع commits، استبدل كلمة pick
بالكلمة squash
أو s
في commits التي تريد دمجها مع أول commit. على سبيل المثال:
pick a1b2c3 Commit message 1
squash d4e5f6 Commit message 2
squash g7h8i9 Commit message 3
بعد ذلك، سيطلب منك Git تعديل رسالة commit المدمجة. يمكنك اختيار رسالة جديدة أو الاحتفاظ بالرسائل السابقة.
ب. استخدام Soft Reset
إذا كنت ترغب في دمج commits دون استخدام rebase، يمكنك الاعتماد على soft reset:
git reset --soft HEAD~n
هذا الأمر سيعيد المؤشر (HEAD) إلى commit معين مع الاحتفاظ بالتغييرات في staging area. بعد ذلك، يمكنك إنشاء commit جديد يحتوي على جميع التغييرات:
git commit -m "دمج التغييرات الأخيرة"
3. التأكد من نجاح عملية الدمج
بعد دمج commits، استخدم الأمر التالي للتحقق من السجل الجديد:
git log --oneline
يجب أن ترى commit واحداً يحتوي على جميع التغييرات.
أفضل الممارسات عند دمج Commits
لضمان نتائج جيدة، اتبع النصائح التالية:
- قم دائماً بأخذ نسخة احتياطية من الفرع قبل إجراء أي تغييرات جذرية.
- استخدم interactive rebase فقط إذا كنت تعمل على فرعك الشخصي ولم تتم مشاركته مع الآخرين.
- لا تعدّل commits التي تم دفعها بالفعل إلى مستودع مشترك، إلا إذا كنت متأكداً تماماً من أن هذا لن يؤثر على فريقك.
ماذا تفعل إذا واجهت تعارضات (Conflicts)؟
أثناء rebase أو reset، قد تواجه تعارضات إذا كانت هناك تغييرات متداخلة. لحل ذلك:
- استخدم الأمر
git status
لتحديد الملفات التي بها تعارضات. - قم بتحرير الملفات المعنية وحل التعارضات.
- بعد حل التعارضات، استخدم الأمر
git add
لإضافة التغييرات. - أكمل عملية rebase باستخدام الأمر
git rebase --continue
.
خاتمة
دمج عدة commits في Git هو عملية مفيدة لتنظيف وتحسين تاريخ المشروع. باستخدام أدوات مثل interactive rebase وsoft reset، يمكنك إدارة التغييرات بشكل أكثر كفاءة ووضوح. تأكد من اتباع أفضل الممارسات لتجنب أي مشاكل غير متوقعة، واستفد من هذه العملية لجعل مشروعك أكثر تنظيماً واحترافية.
سواء كنت مطوراً مبتدئاً أو محترفاً، مهارة إدارة commits في Git تعد من المهارات الأساسية التي يجب أن تتقنها.