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

حذف ونقل وإعادة تسمية الملفات عبر git rm وgit mvGit Rm and Git Mv

احذف الملفات المتتبعة بنظافة عبر git rm، وألغِ تتبع الملفات الحساسة مع إبقائها على القرص عبر git rm --cached، وانقل أو أعد تسمية الملفات بـ git mv.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

ما الفرق بين حذف ملف متتبع عبر نظام التشغيل مباشرة (بالأمر العادي rm أو زر الحذف) وبين استخدام أمر Git المخصص git rm؟

  • الحذف العادي من نظام التشغيل: يزيل الملف من مجلد العمل فقط، فيظهر في git status -s بالرمز D في العمود الأيمن (حذف غير مجهز)، ويحتاج خطوة إضافية لتجهيزه.
  • الأمر git rm <file>: يحذف الملف من القرص ويجهز عملية الحذف في الفهرس فوراً (الرمز D في العمود الأيسر) بخطوة واحدة نظيفة جاهزة للالتزام.
حذف وإلغاء تتبع ونقل الملفات عبر الأمرين git rm وgit mv
Shell
# Remove a tracked file from both disk and Staging Index
git rm legacy-script.js
git status -s
# D  legacy-script.js
git commit -m "Remove deprecated legacy script"

من أهم الأوامر المنقذة في العمل اليومي الأمر git rm --cached <file>؛ فلو افترضنا أنك أضفت بالخطأ ملف إعدادات محلي مثل .env إلى التتبع، وترغب في إخراجه من مستودع Git مع الإبقاء عليه سليماً على قرص حاسوبك ليعمل المشروع:

  • الحذف من الفهرس فقط: يزيل الأمر git rm --cached .env الملف من منطقة التجهيز والتتبع دون أن يمس الملف الفعلي على القرص إطلاقاً.
  • التحول إلى ملف غير متتبع: بعد حفظ الالتزام يتوقف Git عن مراقبة الملف مع بقائه آمناً في مجلد عملك.
Shell
# Stop tracking .env in Git while keeping the file on disk
git rm --cached .env
git status -s
# D  .env
# ?? .env

يزودك الأمر git rm بحماية افتراضية تمنع حذف المجلدات أو الملفات التي تضم تعديلات غير محفوظة عن طريق الخطأ:

  • حذف المجلدات المتكرر (-r): لحذف مجلد فرعي متتبع بكامل محتوياته، مرر الخيار -r مثل git rm -r old-components/ (ويمكن دمجه مع --cached لإلغاء تتبع مجلد كامل دون حذفه من القرص).
  • خيار الإجبار عند وجود تعديلات (-f): يرفض Git حذف ملف يحتوي على تعديلات لم تُحفظ بعد إلا إذا مررت الخيار -f صراحةً.

لإعادة تسمية ملف متتبع أو نقله إلى مجلد فرعي آخر داخل المستودع، استخدم الأمر المدمج git mv <source> <destination>:

  • إعادة تسمية ملف في مكانه: الأمر git mv banner.html hero.html يغير اسم الملف على القرص ويجهز العملية في الفهرس فوراً بالرمز R .
  • نقل ملف إلى مجلد آخر: الأمر git mv hero.html partials/hero.html ينقل الملف إلى المجلد الفرعي ويجهز النقل بخطوة واحدة.
Shell
# Rename a tracked file and stage the change automatically
git mv banner.html hero.html
git status -s
# R  banner.html -> hero.html
git commit -m "Rename banner template to hero"

كيف يتعامل Git داخلياً مع إعادة تسمية الملفات؟ خلافاً للأنظمة القديمة، يركز Git على تتبع بصمة المحتوى نفسه:

  • ثبات بصمة كائن المحتوى (Blob): عند تغيير اسم ملف دون تعديل محتواه، يشير الاسم الجديد في شجرة اللقطة إلى نفس كائن المحتوى ذي البصمة المتطابقة تماماً دون نسخ بايت واحد إضافي.
  • الاكتشاف الذكي للتشابه: حتى لو غيرت اسم الملف وعدلت بضعة أسطر بداخله، يقيس Git نسبة تشابه المحتوى ويكتشف تلقائياً أنها عملية إعادة تسمية (R).
Shell
mkdir -p assets/css
git mv styles.css assets/css/main.css
git status -s
# R  styles.css -> assets/css/main.css

يلخص الجدول المرجعي التالي الفروق العملية بين أوامر الحذف وإلغاء التتبع والنقل قبل الانتقال إلى قواعد تجاهل الملفات عبر .gitignore في الدرس العاشر:

صيغة الأمرالأثر على قرص مجلد العملالأثر على منطقة التجهيز Indexرمز الحالة المختصر
git rm <file>يحذف الملف فعلياً من القرصيجهز حذف الملف للقطة القادمةD <file>
git rm --cached <file>يبقي الملف سليماً على القرصيزيل الملف من فهرس التتبع فقطD مع ??
git rm -r <folder>يحذف المجلد ومحتوياته من القرصيجهز حذف جميع ملفات المجلدD <folder/...>
git mv <old> <new>يعيد تسمية أو ينقل الملف على القرصيجهز إعادة التسمية بخطوة واحدةR <old> -> <new>
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

تعلمت في هذا الدرس الفرق بين الحذف العادي والأمر git rm، وإلغاء تتبع الملفات مع إبقائها على القرص عبر git rm --cached، وحذف المجلدات بالخيار -r، ونقل وتسمية الملفات بالأمر git mv. الخطوة التالية: انتقل الآن إلى الدرس رقم 10 «تجاهل الملفات والمجلدات عبر ملف gitignore» لإتمام الوحدة الثانية.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Tracked File Removal حذف الملف المتتبع
استخدام الأمر git rm لحذف الملف من مجلد العمل وتجهيز إزالته في الفهرس بخطوة واحدة.
للمراجعة
02 Cached Untracking إلغاء التتبع مع بقاء الملف
تنفيذ git rm --cached لإخراج الملف من تتبع Git مع الحفاظ على نسخته الفعلية على قرص الجهاز.
للمراجعة
03 Tracked Rename إعادة تسمية متتبعة
استخدام الأمر git mv لتغيير اسم الملف أو مساره وتجهيز التغيير تلقائياً في منطقة التجهيز.
للمراجعة
04 Rename Similarity Detection اكتشاف تشابه المحتوى عند النقل
آلية فحص تطابق وتشابه بصمات المحتوى التي يكتشف بها Git انتقال الملفات وتغير أسمائها.
للمراجعة

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

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

الاختصارات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 RM RM
Remove Tracked File Subcommand
أمر الحذف في Git لإزالة الملفات من الفهرس ومجلد العمل.
للمراجعة
02 MV MV
Move or Rename File Subcommand
أمر النقل وإعادة التسمية في Git مع التجهيز التلقائي.
للمراجعة
03 ENV ENV
Environment Configuration File (.env)
ملف متغيرات البيئة المحلي الذي يُستخرج من التتبع عبر --cached إذا أُضيف بالخطأ.
للمراجعة
04 SHA-1 SHA-1
Content Blob Hash
بصمة محتوى الملف التي تظل ثابتة تماماً عند نقل الملف أو تغيير اسمه دون تعديل نصه.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. بدّل بين تبويبات المحاكي التفاعلي الثلاثة لملاحظة الفرق العملي بين git rm و--cached وgit mv.

  2. نفّذ git rm --cached على ملف تجريبي وتحقق من بقائه على القرص وتحوله إلى غير متتبع في git status -s.

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

مساحة التحدي

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

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

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

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

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

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

ماذا يفعل تنفيذ الأمر git rm legacy.js بشكل افتراضي؟

يحذف الملف من مجلد العمل على القرص ويجهز عملية الحذف في منطقة التجهيز فوراً.

02

ما الأمر الذي يزيل ملف ".env" من تتبع Git مع الإبقاء على الملف الفعلي سليماً على قرص حاسوبك؟

يزيل الأمر git rm --cached .env الملف من الفهرس فقط ويتركه محفوظاً في مجلد العمل على القرص.

03

يؤدي تنفيذ الأمر git rm --cached config.json إلى مسح الملف نهائياً من القرص الصلب.

خطأ؛ فالخيار --cached مخصص تحديداً للإبقاء على الملف فوق القرص مع إخراجه من فهرس Git فقط.

04

ما الخيار الواجب تمريره مع الأمر git rm لحذف مجلد فرعي متتبع بكامل محتوياته؟

يتيح الخيار -r الحذف المتكرر للمجلدات ومحتوياتها.

05

ما الأمر الذي يعيد تسمية الملف old-nav.js إلى main-nav.js على القرص ويجهز التغيير في الفهرس بخطوة واحدة؟

ينفذ الأمر git mv old-nav.js main-nav.js إعادة التسمية وتجهيزها في الفهرس فوراً.

06

ما رمز الحالة الذي يظهر في العمود الأيسر من مخرجات git status -s بعد تنفيذ الأمر git mv؟

يظهر الحرف R للدلالة على عملية إعادة تسمية مجهزة في الفهرس.

07

عند إعادة تسمية ملف دون تعديل محتواه، يعيد Git استخدام نفس كائن المحتوى (Blob) ذي البصمة المتطابقة دون تكرار البيانات.

صواب؛ لأن كائنات المحتوى تحفظ البيانات بمعزل عن الاسم، فيتغير الاسم داخل شجرة المجلد فقط.

08

ما تسلسل الأوامر الثلاثة الذي يكافئ تماماً تنفيذ الأمر المختصر "git mv a.html b.html"؟

يكافئ نقل الملف في نظام التشغيل متبوعاً بحذف الاسم القديم بـ git rm وتجهيز الاسم الجديد بـ git add.