شروحات Git
شرح git add -p: جهّز أسطرًا محددة وأنشئ commits واضحة
اجتمع إصلاح وإعادة تنظيم في ملف واحد؟ سجّل الإصلاح الآن واترك التعديل الآخر لوقت لاحق. دليل عملي لمنطقة staging ووضع patch واختيار الأسطر في GitTree.
لتسجيل جزء من ملف فقط، جهّز التغييرات المطلوبة باستخدام `git add -p -- path/to/file`، ثم راجعها بأمر `git diff --cached` وأنشئ commit. تبقى بقية التعديلات في ملفات العمل. في GitTree افتح فروق الملف وحدد الأسطر المتغيرة ثم اختر Stage Lines لتجهيز commit محدد الغرض.
لنفترض أنك أصلحت خطأ في التحقق من نموذج الشراء ثم بدأت إعادة تنظيم المكوّن نفسه. يحتاج المراجع إلى فهم الإصلاح دون قراءة إعادة تنظيم غير مكتملة. يساعدك الدليل في فصل التغييرات قبل تسجيلها. يستخدم المثال المتحرك GitTree الذي نطوّره لأنظمة macOS وWindows وLinux. تشمل الخطة المجانية التجهيز الجزئي، وتتطلب الإصدارات الرسمية الحالية تسجيل الدخول.
ملفات العمل وstaging وcommit: ما الذي يُسجّل؟
| المكان | المحتوى | كيفية الفحص |
|---|---|---|
| ملفات العمل | الملفات بحالتها الحالية | افتح الملفات في المحرر |
| Index / staging | النسخة المقترحة للتسجيل التالي | يقارنها git diff --cached مع HEAD |
| HEAD | commit الحالي | git show HEAD:path/to/file |
التجهيز خطوة اختيار وليس commit أو push. يمكن تجهيز جزء من الملف؛ تحتفظ staging بنسخة بينما يعرض المحرر كل التعديلات. إذا عدّلت الملف بعد تجهيزه فلن تتحدث النسخة المجهّزة تلقائيًا. راجعها مجددًا قبل التسجيل. تساعدك شجرة commits المرئية في فحص التاريخ بعد إنشاء commit.
استخدام git add -p على ملف واحد
ابدأ بأمر git status وافحص ما هو موجود في staging بالفعل. يضيف وضع patch اختياراتك إلى الموجود، ولا يزيل اختيارات سابقة. في المثال استبدل src/checkout.ts بمسار ملف نصي يتتبعه Git، واقبل إصلاح التحقق فقط عندما يسألك Git عن كل جزء.
git status
git diff --cached
git diff -- src/checkout.ts
git add -p -- src/checkout.ts
git diff --cached
git diff -- src/checkout.ts
git commit -m "fix: validate checkout input"لا تنفّذ commit الأخير إلا بعد مراجعة الفروق المجهّزة واختبار التغيير المقصود. يعرض git diff --cached ما سيُسجّل، ويعرض git diff ما سيبقى خارج commit. تجنّب git commit -a وتمرير مسارات ملفات إلى git commit في هذا السياق؛ فقد تتجاوز هذه الصيغ الاختيار الجزئي الذي جهزته.
تقسيم hunk عندما تتجاور تغييرات مختلفة
الـhunk مجموعة أسطر متغيرة متجاورة مع سياقها. قد يجمع وضع patch الإصلاح وإعادة التنظيم في جزء واحد. استخدم s لطلب تقسيمه. إذا لم يمكن فصله تلقائيًا، يفتح e محرر patch، أو يمكنك استخدام تحديد الأسطر بصريًا لاختيار الإضافات والحذف المطلوبين.
| المفتاح | القرار |
|---|---|
y | جهّز الجزء الحالي |
n | اتركه خارج staging |
s | قسّمه إلى أجزاء أصغر إن أمكن |
e | حرّر patch المقترح |
q | توقف عن مراجعة الأجزاء المتبقية |
عند استبدال سطر، تعامل مع السطر المحذوف وبديله كتغيير منطقي واحد. قد ينتج عن اختيار أحدهما فقط كود لم تره في المحرر. تحرير patch المتقدم اختياري؛ إذا لم تستطع تفسير النتيجة المجهّزة فألغِ تجهيزها واختر حدودًا أوضح. المطلوب commits تعمل منفردة، وليس مجرد commits صغيرة.
تجهيز أسطر محددة في GitTree
افتح الملف المتغير
اختر صف // WIP ثم الملف ضمن Unstaged Files لعرض فروقه.
اختر حجم التغيير
استخدم Stage Hunk لتجهيز جزء كامل، أو حدد المربعات بجوار الأسطر المتغيرة. يحدد Shift مع النقر نطاقًا.
جهّز الأسطر المختارة
اختر Stage Lines في شريط التحديد. تبقى التعديلات الأخرى في ملفات العمل.
راجع النسخة المجهّزة
اختر الملف ضمن Staged Files وراجع الفروق. صحح الاختيار باستخدام Unstage Hunk أو Unstage Lines.
سجّل تغييرًا متكاملًا
اكتب رسالة تصف التغيير المختار وسجّله، ثم عُد إلى التعديلات المتبقية لإنشاء commit آخر.

نزّل GitTree لمراجعة فروق مختلطة وبناء commits واضحة بصريًا. يمكنك استخدامه على مستودع موجود بجوار الطرفية؛ فكلاهما يستخدم منطقة staging نفسها.
إلغاء التجهيز دون حذف التعديلات
git restore --staged -- src/checkout.ts
# Or choose which staged blocks to remove:
git restore --staged -p -- src/checkout.tsهذان أمران بديلان. يغيّر restore مع --staged منطقة staging بدل ملف العمل، ويعيد المحتوى المجهّز عادةً نحو HEAD في مستودع يحتوي commits. دون --staged قد يستبدل restore تعديلات العمل، لذا ميّز بينهما. اختر Unstage في GitTree وليس Discard عندما تريد فقط تغيير محتوى commit التالي.
لماذا يظهر الملف مرتين أو يتعذر تجهيز سطر؟
ظهور الملف ضمن Staged Files وUnstaged Files يعني عادةً تجهيزًا جزئيًا أو تعديلًا لاحقًا، وليس وجود ملفين. قد يحتاج ملف نصي جديد إلى git add -N -- path/to/new-file ليعرض وضع patch محتواه. لا تملك الملفات الثنائية أجزاء نصية عادية؛ ويجهّز GitTree أيضًا إعادة التسمية ومؤشرات LFS وتغييرات submodules كعمليات على الملف كاملًا. أظهر المسافات البيضاء قبل اختيار تغييرات تتعلق بها وحدها.
إذا غيّر المحرر أو المنسّق الملف بعد فتح الفروق فقد يرفض GitTree اختيارًا قديمًا للأسطر. حدّث الفروق واختر مجددًا. لا تفصل تغييرات تعتمد على بعضها لمجرد تقليل عدد الأسطر. عند مقاطعة المهمة احفظ العمل مؤقتًا باستخدام stash، ولتنظيم تاريخ مسجّل مسبقًا راجع دليل rebase التفاعلي.
اختبر التغيير المجهّز وليس ملفات المحرر فقط
يعمل أمر الاختبار المعتاد على ملفات العمل التي ما زالت تشمل التعديلات غير المجهّزة؛ ونجاحه لا يثبت اكتمال commit الجزئي. عند فصل تغيير مهم، أنشئ commit محليًا ثم افحص نسخته واختبرها في مجلد مستقل نظيف أو worktree. إذا فشل بسبب اعتماد مفقود فأضفه قبل مشاركة الفرع. يشرح دليل worktrees كيفية فصل النسخ في مجلدات مختلفة.
الأسئلة الشائعة
ماذا يفعل git add -p؟
يتيح اختيار أجزاء من التغييرات غير المجهّزة وإضافتها إلى staging. لا ينشئ commit ولا يرفع العمل.
هل يمكن تسجيل بضعة أسطر من ملف؟
نعم. جهّز التغييرات وراجع git diff --cached ثم أنشئ commit دون -a أو مسارات ملفات. تبقى التعديلات الأخرى دون تسجيل.
هل يحذف إلغاء التجهيز تعديلاتي؟
يغيّر git restore --staged منطقة staging ويترك ملفات العمل كما هي. حذف تعديلات العمل أو استعادتها عملية أخرى.
لماذا لا يستطيع Git تقسيم hunk؟
قد لا تفصل أسطر ثابتة كافية بين التعديلات. راجع patch يدويًا أو استخدم اختيار الأسطر مع إبقاء الإضافات والحذف المترابطين معًا.
هل التجهيز الجزئي مجاني في GitTree؟
نعم. تشمل الخطة المجانية تجهيز الملفات والأجزاء والأسطر والمستودعات الخاصة. تتطلب الإصدارات الرسمية الحالية تسجيل الدخول.
المصادر
تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 28 أكتوبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.