git mv

اللقطات الأساسية

نقل ملف أو إعادة تسميته


يعيد الأمر 'git mv' تسمية ملف متتبَّع أو ينقله ويجهّز التغيير في خطوة واحدة. هذا يعادل إعادة تسمية الملف بنفسك ثم تشغيل git add على الاسم القديم والجديد. لا يخزّن Git إعادات التسمية: يكتشفها بمقارنة المحتوى، لذا يستطيع git log --follow عرض سجل الملف عبر إعادة التسمية.

الصيغة

git mv [-v] [-f] [-n] [-k] <source> <destination>
[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار

أمثلة

إعادة تسمية ملف

git mv app.js cart.js

يعيد تسمية الملف ويجهّز إعادة التسمية.


النقل إلى مجلد

git mv cart.js src/cart.js

ينقل الملف إلى مجلد موجود.


السجل بعد إعادة التسمية

git log --follow cart.js

يتتبّع السجل رجوعًا عبر إعادة التسمية.

أمثلة على سير العمل

1
git mv app.js cart.js

إعادة التسمية والتجهيز

2
git status

يعرض "renamed: app.js -> cart.js"

3
git commit -m "Rename app.js to cart.js"

Commit

حل المشكلات

fatal: destination exists

السبب: يوجد ملف بالاسم الجديد مسبقًا

اختر اسمًا آخر، أو استخدم -f للكتابة فوقه

fatal: not under version control

السبب: الملف المصدر غير متتبَّع

أعد تسميته بشكل عادي، أو نفّذ git add أولًا

نصائح وأخطاء شائعة

أفضل الممارسات

  • ✓سجّل إعادة التسمية في commit منفصل عن التعديلات الكبيرة، ليتعرّف Git عليها كإعادة تسمية.
  • ✓استخدم git log --follow <file> لرؤية السجل عبر إعادات التسمية.

أخطاء متكررة

  • ✗إعادة التسمية في مستكشف الملفات وتسجيل الملف الجديد فقط — القديم ما زال متتبَّعًا.
  • ✗تغيير حالة الأحرف فقط على Windows أو macOS دون git mv، وقد لا يلاحظ Git ذلك.
  • ✗إعادة تسمية ملف وتعديله كثيرًا في الـ commit نفسه، فلا يكتشف Git إعادة التسمية.

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

A:

ليس مباشرة: يقارن المحتوى بين الـ commits ويكتشف إعادة التسمية.

A:

نعم: git mv src lib يعيد تسمية المجلد وكل ملف فيه.