git am
الـ patches وإعادة الكتابة
تطبيق patches من ملفات البريد كـ commits
يأخذ الأمر 'git am' (apply mailbox) ملفات الـ patch التي أنشأها git format-patch ويحوّل كلًّا منها إلى commit، مع الإبقاء على المؤلف والتاريخ والرسالة الأصلية. إنه الطرف المستقبِل للمساهمات عبر البريد. إذا لم يعد الـ patch ينطبق يتوقف git am؛ أصلحه ثم شغّل git am --continue، أو تراجع بـ git am --abort.
الصيغة
git am [--signoff] [--3way] [<mbox> | <patch-file>...]
git am (--continue | --skip | --abort)[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار
الخيارات
اختيار الخيار المناسب
تطبيق الـ patches
ملفات أم commits؟
| الأمر | ينشئ commit |
|---|---|
git apply fix.patch | لا — الملفات فقط |
git am fix.patch | نعم — بالمؤلف الأصلي |
أمثلة
تطبيق الـ patches
git am 0001-*.patchيصبح كل ملف commit.
إضافة توقيعك
git am -s 0001-fix.patchيضيف Signed-off-by باسمك.
إيقاف تطبيق فاشل
git am --abortيعود كل شيء كما كان.
أمثلة على سير العمل
1
git switch -c review mainفرع لاختبارها
2
git am ~/patches/*.patchتطبيقها
3
git log --oneline main..التحقق مما وصل
حل المشكلات
error: patch failed … patch does not apply
السبب: ملفاتك تختلف عن سياق الـ patch
git am --abort، ثم أعد المحاولة بـ --3way، أو اطلب patch بعد rebase
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓طبّق الـ patches على فرع جديد، لا مباشرة على main.
أخطاء متكررة
- ✗استخدام git apply وأنت تريد commits — apply يغيّر الملفات فقط.
- ✗ترك git am فاشل نصف منتهٍ: أنهِه بـ --continue أو --abort.
الأسئلة الشائعة
A:
تعني «apply mailbox»: يقرأ الـ patches بصيغة البريد (mbox).