انتقل إلى محتوى الدرس
الدرس 07
دورة Version Control

تجهيز الملفات عبر الأمر git addGit Add

جهّز الملفات الجديدة والمعدلة في منطقة التجهيز عبر الأمر git add، وتعرّف على الفروق الدقيقة بين الخيارات القياسية والتجهيز الجزئي بـ git add -p.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

لنقل التعديلات من مجلد العمل إلى منطقة التجهيز (.git/index) نستخدم الأمر git add. وعلى الرغم من اسمه الحرفي، فإن وظيفته الهندسية الدقيقة لا تقتصر على الملفات الجديدة فحسب، بل تعني «أضف المحتوى الحالي لهذا الملف إلى فهرس التجهيز استعداداً للقطة القادمة»:

  • بدء تتبع الملفات الجديدة: يحوّل الملف غير المتتبع (??) إلى ملف مجهز جديد (A ).
  • تجهيز تعديلات الملفات المتتبعة: ينسخ النسخة الحالية للملف المعدل ( M) إلى الفهرس ليصبح مجهزاً (M ).
تجهيز الملفات إلى الفهرس عبر صيغ الأمر git add المختلفة
Shell
git add index.html
git status -s
# A  index.html

يمتاز الأمر git add بمرونة عالية في تحديد الملفات المراد تجهيزها؛ إذ يمكنك تمرير ملف واحد أو عدة ملفات مفصولة بمسافة أو مسار مجلد فرعي كامل:

  • ملف واحد محدد: الأمر git add index.html يجهز هذا الملف وحده فقط.
  • عدة ملفات معاً: الأمر git add index.html styles.css app.js يجهز الملفات الثلاثة في سطر واحد.
  • مجلد فرعي بالكامل: الأمر git add src/ يجهز كافة الملفات داخل المجلد src/ ومجلداته الفرعية.
Shell
# Stage multiple specific files at once
git add index.html styles.css
# Stage everything inside the src/ subfolder
git add src/
git status -s

لتجهيز مجموعة كبيرة من التعديلات دفعة واحدة، يوفر Git ثلاثة خيارات شهيرة يُعد التمييز الدقيق بينها من أهم الأساسيات الهندسية:

  • الأمر git add .: يجهز الملفات الجديدة والمعدلة والمحذوفة ضمن المجلد المفتوح حالياً ومجلداته الفرعية.
  • الأمر git add -A (أو --all): يجهز كافة الملفات الجديدة والمعدلة والمحذوفة في المستودع بأكمله حتى لو نفذته وأنت داخل مجلد فرعي.
  • الأمر git add -u (أو --update): يجهز التعديلات والحذف في الملفات المتتبعة مسبقاً فقط، ويتجاهل أي ملفات جديدة غير متتبعة (??).

من القواعد الذهبية في Git أن الأمر git add يجهز نسخة الملف كما هي في اللحظة الزمنية التي شغّلت فيها الأمر؛ فإذا نفذت git add index.html ثم فتحت المحرر وأضفت سطراً جديداً داخل index.html:

  • انقسام النسخة إلى حالتين (MM): تظل منطقة التجهيز محتفظة بالنسخة السابقة، بينما يظل التعديل الجديد في مجلد العمل غير مجهز.
  • ضرورة إعادة التجهيز: يجب تشغيل git add index.html مرة ثانية لضم التعديل الأخير إلى اللقطة القادمة.
Shell
git add index.html
# Edit index.html again on disk
echo "<footer>v2</footer>" >> index.html
git status -s
# MM index.html
git add index.html

ماذا لو أجريت تعديلين غير مترابطين داخل ملف واحد (كإصلاح خطأ عاجل في أعلى الملف وبدء ميزة غير مكتملة في أسفله)؟ هنا يبرز الخيار الاحترافي git add -p (أو --patch) للتجهيز الجزئي التفاعلي؛ حيث يعرض Git كل جزء متغير (Hunk) على حدة ويسألك عن قرارك:

  • الحرف y: تجهيز هذا الجزء فقط في الفهرس.
  • الحرف n: تخطي هذا الجزء وإبقاؤه في مجلد العمل دون تجهيز.
  • الحرفان s وq: تقسيم الجزء إلى قطع أصغر (s) أو الإنهاء والخروج (q).
Shell
# Interactively choose which hunks of a file to stage
git add -p index.html
# Stage this hunk [y,n,q,a,d,s,e,?]? y
# Dry-run preview without actually staging (-n):
git add -n .

يقارن الجدول الشامل التالي بين كافة صيغ وخيارات الأمر git add قبل الانتقال إلى حفظ اللقطات الدائمة بالأمر git commit في الدرس الثامن:

صيغة الأمرالملفات الجديدة غير المتتبعةالملفات المتتبعة المعدلةنطاق التأثير
git add <file>تُجهز إذا ذُكر اسمهاتُجهز إذا ذُكر اسمهاالملفات المحددة بالاسم فقط
git add .تُجهز بالكاملتُجهز بالكاملالمجلد الحالي وجميع مجلداته الفرعية
git add -Aتُجهز بالكاملتُجهز بالكاملكامل المستودع من أي مسار فرعي
git add -uتُتجاهل ولا تُجهزتُجهز بالكاملالملفات المتتبعة مسبقاً فقط
git add -pلا يشملها افتراضياًتُجهز الأجزاء المختارة فقطاختيار تفاعلي جزءاً بجزء داخل الملف
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس آلية عمل منطقة التجهيز عبر الأمر git add، وتجهيز ملف منفرد أو عدة ملفات، والفروق الدقيقة بين git add . وgit add -A وgit add -u، وسبب إعادة التجهيز بعد التعديل، والتجهيز الجزئي بالخيار -p. الخطوة التالية: انتقل الآن إلى الدرس رقم 8 «حفظ اللقطات الدائمة عبر الأمر git commit» لتسجيل اللقطات في المستودع.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Staging Index فهرس التجهيز Index
ملف الفهرس داخل .git الذي يجمع فيه الأمر git add النسخ المحددة للملفات تمهيداً لحفظها في اللقطة القادمة.
للمراجعة
02 Patch Staging التجهيز الجزئي التفاعلي
استخدام الخيار git add -p لاختيار وتجهيز أجزاء محددة من تعديلات الملف وترك بقية الأجزاء في مجلد العمل.
للمراجعة
03 Hunk المقطع المعدل Hunk
كتلة متصلة من الأسطر المضافة أو المعدلة داخل الملف يعرضها Git أثناء التجهيز الجزئي التفاعلي.
للمراجعة
04 Dry-Run Staging المعاينة التجريبية للتجهيز
تشغيل git add -n لاستعراض الملفات التي ستدخل الفهرس دون تنفيذ أي تعديل فعلي.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 INDEX INDEX
Git Staging Area File (.git/index)
المصطلح التقني الداخلي لمنطقة التجهيز التي يحدثها الأمر git add.
للمراجعة
02 BLOB BLOB
Binary Large Object
كائن محتوى الملف المضغوط الذي ينشئه Git داخل .git/objects لحظة تنفيذ git add.
للمراجعة
03 GLOB GLOB
File Wildcard Pattern
أنماط مطابقة المسارات والملفات لبناء أوامر تجهيز متعددة.
للمراجعة
04 MM MM
Modified Staged and Modified Unstaged
رمز الحالة الذي يظهر عند تعديل الملف مجدداً بعد تنفيذ git add عليه.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. بدّل بين تبويبات المحاكي التفاعلي الثلاثة لمقارنة تجهيز ملف محدد والخيار -u والخيار الشامل -A.

  2. جهّز ملفاً بالأمر git add ثم عدّله مرة أخرى وافحص ظهور الرمز MM في git status -s ثم أعد تجهيزه.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الوظيفة الأساسية للأمر git add ضمن معمارية المناطق الثلاث في Git؟

ينقل الأمر git add النسخة الحالية للملفات الجديدة أو المعدلة من مجلد العمل إلى منطقة التجهيز (.git/index).

02

أي خيار في الأمر git add يجهز تعديلات الملفات المتتبعة مسبقاً فقط ويتجاهل الملفات الجديدة غير المتتبعة (??)؟

يقوم الخيار git add -u بتجهيز التعديلات والحذف للملفات المتتبعة فقط دون إضافة أي ملفات غير متتبعة.

03

ما الأمر الذي يجهز كافة الملفات الجديدة والمعدلة والمحذوفة في المستودع بأكمله بغض النظر عن المجلد الفرعي المفتوح حالياً؟

يجهز الأمر git add -A جميع التغييرات في كامل شجرة المستودع من أي مسار فرعي.

04

إذا عدّلت ملفاً بعد تشغيل git add عليه، فيجب عليك تشغيل git add مرة ثانية لضم التعديل الجديد إلى اللقطة القادمة.

صواب؛ لأن git add يجهز محتوى الملف كما كان لحظة تشغيل الأمر فقط.

05

ما الأمر الذي يتيح لك مراجعة وتجهيز أجزاء محددة (Hunks) داخل ملف واحد تفاعلياً مع ترك بقية الأجزاء غير مجهزة؟

يفتح الأمر git add -p وضع التجهيز الجزئي التفاعلي لاختيار المقاطع المطلوبة فقط.

06

أثناء التجهيز الجزئي التفاعلي (git add -p)، ما الحرف الذي تضغطه للموافقة على تجهيز المقطع المعروض حالياً؟

الضغط على الحرف y يجهز المقطع الحالي في الفهرس، بينما يتخطاه الحرف n.

07

يُستخدم الأمر git add مرة واحدة فقط للملفات الجديدة غير المتتبعة ولا يُستخدم أبداً مع الملفات المتتبعة المعدلة.

خطأ؛ بل يُستخدم git add مع الملفات المتتبعة في كل مرة تعدلها وترغب في تجهيز تعديلاتها للالتزام القادم.

08

أي خيار ينفذ معاينة تجريبية للأمر git add لعرض الملفات التي ستُجهز دون تعديل الفهرس فعلياً؟

يعرض الخيار -n (أو --dry-run) معاينة للملفات دون تعديل منطقة التجهيز.