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

طريقة إنشاء رقعة (patch) وتطبيقها في Git

تنقل الرقعة التغييرات بين المستودعات في ملف نصي. إليك متى تستخدم git diff أو git format-patch، ومتى تستخدم git apply أو git am، وكيف تصلح رقعة ترفض التطبيق.

بقلم Kodmora

شركة البرمجيات المطوّرة لـGitTree

آخر تحديث
  • الإيداعات
  • المستودعات البعيدة والدفع
في هذه الصفحة

لإنشاء رقعة من تغييرات غير مودَعة نفّذ `git diff > fix.patch`، ومن آخر إيداع نفّذ `git format-patch -1 HEAD`. ولتطبيقها نفّذ `git apply fix.patch` أو `git am 0001-my-change.patch`. استخدم git apply إن أردت التغييرات في مجلد العمل فقط، وgit am إن أردت الإيداع الأصلي برسالته ومؤلفه.

ما هي رقعة Git؟

الرقعة ملف نصي يسرد الأسطر التي تُحذف وتُضاف في كل ملف. وهي مناسبة حين لا تستطيع الدفع إلى المستودع البعيد نفسه: إرسال إصلاح بالبريد، أو نقل تغيير بين مستودعين منفصلين، أو الاحتفاظ بتغيير محلي خارج Git. أما إذا كنت تشارك الطرف الآخر مستودعًا بعيدًا، فالفرع أبسط.

كيف أنشئ رقعة من تغييرات غير مودَعة؟

# unstaged changes
git diff > fix.patch

# staged changes
git diff --staged > fix.patch

# everything since the last commit
git diff HEAD > fix.patch

# include binary files
git diff --binary > fix.patch

لا تظهر الملفات الجديدة غير المُجهَّزة في git diff. نفّذ عليها git add أولًا واستخدم --staged.

كيف أنشئ رقعة من الإيداعات؟

# the last commit
git format-patch -1 HEAD

# the last three commits, one file each
git format-patch -3

# everything on this branch that main does not have
git format-patch main..feature/search -o patches/

# all of it in a single file
git format-patch main --stdout > feature.patch

يكتب format-patch ملفات بأسماء مثل 0001-add-search-box.patch. ويحتفظ كل ملف برسالة الإيداع ومؤلفه وتاريخه، وهو ما يفقده git diff العادي.

كيف أطبّق الرقعة؟

افحصها أولًا. هذان الأمران لا يغيّران شيئًا:

# what it touches
git apply --stat fix.patch

# whether it will apply
git apply --check fix.patch

ثم طبّقها بالطريقة التي تحتاجها:

# into the working folder, nothing staged
git apply fix.patch

# into the working folder and the staging area
git apply --index fix.patch

# as commits, with their messages and authors
git am patches/*.patch

ما الفرق بين git apply وgit am؟

مقارنة git apply بـ git am
git applygit am
يقرأأي ملف فروقملفات git format-patch أو صناديق البريد
النتيجةملفات متغيرة دون إيداعإيداع لكل رقعة
يبقي الرسالة والمؤلفلانعم
عند الفشللا يطبّق شيئًا افتراضيًايتوقف؛ تابع أو نفّذ git am --abort

كيف أصلح خطأ patch does not apply؟

error: patch failed: src/search.ts:14
error: src/search.ts: patch does not apply

تغيّر الملف منذ إنشاء الرقعة، فلم تعد أسطر السياق مطابقة. جرّب ما يلي بالترتيب:

  1. يستخدم git apply --3way fix.patch النسخ الأصلية للدمج ويترك علامات تعارض عادية، ويحتاج إلى وجود تلك النسخ في مستودعك.
  2. يفيد git apply --whitespace=fix fix.patch عندما يقتصر الاختلاف على المسافات أو نهايات الأسطر.
  3. يطبّق git apply --reject fix.patch ما يستطيع، ويكتب الأجزاء الفاشلة في ملفات .rej لتطبيقها يدويًا.
  4. انتقل إلى الإيداع الذي صُنعت منه الرقعة، وطبّقها هناك، ثم أعد التأسيس.

أما مع git am فاستخدم git am --3way، وحلّ التعارض، ونفّذ git add على الملف ثم git am --continue. وللتراجع نفّذ git am --abort، كما يوضح مقال طريقة إلغاء الدمج أو إعادة التأسيس.

كيف أتراجع عن رقعة؟

git apply -R fix.patch

يطبّق -R الرقعة بالعكس. وإن استخدمت git am، فالإيداعات عادية، فتراجع عنها بالأمر `git reset` أو `git revert`.

طريقة إنشاء رقعة وتطبيقها في GitTree

  1. احفظ رقعة

    انقر بزر الفأرة الأيمن على إيداع وافتح قائمة النسخ، ثم إنشاء رقعة من الإيداع…. حدد عدة إيداعات لأمر إنشاء رقعة من الإيداعات…، أو انقر بزر الفأرة الأيمن على ملف متغيّر لأمر إنشاء رقعة من تغييرات الملف….

  2. طبّق رقعة

    نفّذ تطبيق رقعة… من لوحة الأوامر واختر الملف. يذكر GitTree عدد ما فيها من ملفات وإيداعات، وما إذا كانت تتضمن تغييرات ثنائية.

  3. اختر طريقة التطبيق

    تحت التطبيق على، اختر مجلد العمل فقط (git apply) أو مجلد العمل مع تجهيز التغييرات (git apply --index) أو كإيداعات على الفرع الحالي (git am)، ثم اضغط تطبيق.

أمر إنشاء رقعة من الإيداع… في قائمة النسخ الفرعية لإيداع في GitTree.
أمر إنشاء رقعة من الإيداع… في قائمة النسخ الفرعية لإيداع في GitTree.واجهة GitTree مع مستودع للعرض.

يسرد دليل إنشاء الرقع وتطبيقها كل الخيارات.

الأسئلة الشائعة

ما الفرق بين git diff وgit format-patch؟

يكتب git diff التغييرات فقط. أما git format-patch فيكتب ملفًا لكل إيداع برسالته ومؤلفه وتاريخه، فيستطيع git am إعادة إنشاء الإيداع.

هل ينشئ git apply إيداعًا؟

لا. إنه يغيّر الملفات فقط. راجعها ثم أودِع كالمعتاد. واستخدم git am للحصول على إيداعات.

كيف أطبّق رقعة من GitHub؟

أضف .patch إلى نهاية رابط إيداع أو طلب سحب على GitHub، ونزّل الملف ونفّذ عليه git am.

هل يمكن أن تتضمن الرقعة ملفات ثنائية؟

نعم، إذا أنشأتها بالأمر git diff --binary. ويتضمن git format-patch التغييرات الثنائية افتراضيًا.

هل cherry-pick أفضل من الرقعة؟

إذا كان الإيداعان في مستودع واحد أو مستودع بعيد تم جلبه، فنعم: `git cherry-pick` أقصر ويتتبع الإيداع المصدر. أما الرقع فهي للمستودعات التي لا يصل بعضها إلى بعض.

المصادر

تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 7 نوفمبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.