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 يعيد تسمية المجلد وكل ملف فيه.