لتجعل Git يسجل تغييرًا في اسم الملف يقتصر فقط على تعديل حالة الأحرف — مثل readme.md إلى README.md — شغّل git mv من داخل المستودع في Terminal، ثم تحقق من التغيير المُجهّز باستخدام git status. في العديد من أجهزة Mac، يحافظ تنسيق APFS الافتراضي على حالة أحرف اسم الملف ولكنه لا يميّز الأسماء بناءً عليها، لذا فإن إعادة التسمية عبر Finder أو باستخدام الأمر mv العادي قد تجعل Git عاجزًا عن التعرف على الاختلاف. تشير Apple إلى أن APFS يمكن تهيئته أيضًا ليكون حساسًا لحالة الأحرف، لذا يعتمد السلوك على وحدة التخزين. Apple Developer: Files and directories
إعادة تسمية ملف متتبَّع باستخدام git mv
في Terminal، انتقل إلى المستودع الذي يحتوي على الملف. استبدل المسارات النموذجية أدناه بالمسارات الحالية والمطلوبة بدقة. يُعد وضع كل مسار بين علامتي اقتباس ممارسة جيدة إذا كان الاسم يحتوي على مسافات أو رموز خاصة ببيئة الأوامر (shell metacharacters).
git mv 'src/readme.md' 'src/README.md'
git status
يقوم أمر git mv في Git بإعادة تسمية المسار في شجرة العمل (working-tree) وتحديث الفهرس (index)؛ وبذلك يُجهَّز التغيير (staged)، ولكنه لا يزال بحاجة إلى إجراء إيداع (commit). يشترط دليل Git وجود المسار المصدر، ويوضح أن تحديث الفهرس يحدث بعد نجاح عملية النقل. وبالمثل، يوصي سير عمل سطر الأوامر الموثق من GitHub بالتحقق من git status بعد تشغيل git mv. وثائق git-mv وثائق GitHub: إعادة تسمية ملف
إذا نجحت العملية، فتحقق من مخرجات الحالة للتأكد من وجود إعادة تسمية مُجهّزة من المسار القديم إلى الجديد. راجع كامل التغييرات المُجهّزة قبل إجراء الإيداع، خاصةً إذا قمت أيضًا بتعديل محتوى الملف:
git diff --cached --summary
git diff --cached -- 'src/README.md'
يساعد الملخص في تأكيد تغيير المسار؛ بينما يتيح لك الأمر الثاني فحص المحتوى المُجهّز لذلك المسار. قد يعرض Git إعادة التسمية كعملية حذف وإضافة في بعض السياقات لأن طريقة عرض إعادة التسمية تُستنتج من محتويات الملف وسجله. التحقق الأساسي هنا هو أن الفهرس يحتوي على المسار المطلوب ولا يتضمن أي تغييرات مُجهّزة غير مقصودة.
إذا فشلت إعادة التسمية المباشرة المقتصرة على حالة الأحرف
لا تقبل بعض وحدات التخزين غير الحساسة لحالة الأحرف أو بعض إعدادات Git النقل المباشر الذي يختلف فيه المصدر والوجهة في حالة الأحرف فقط. استخدم اسمًا مؤقتًا بهجاء مختلف، ثم انقل ذلك المسار المؤقت إلى الاسم النهائي:
git mv 'src/readme.md' 'src/readme-case-tmp.md'
git mv 'src/readme-case-tmp.md' 'src/README.md'
git status
يجب ألا يكون المسار المؤقت موجودًا بالفعل. بعد تنفيذ كلا الأمرين، تأكد من أن الحالة تُظهر فقط إعادة التسمية المطلوبة من المسار القديم إلى الجديد، وتحقق من الفروق المُجهّزة (staged diff). تمنح هذه الطريقة المكونة من خطوتين نظام الملفات اسمًا وسيطًا لتمييزه، بينما يقوم git mv بتحديث فهرس Git عند كل خطوة ناجحة. إذا أظهر أي من الأمرين خطأً، فتوقف وافحص git status والدليل قبل إعادة المحاولة؛ ولا تضف خيار -f إلا إذا كنت قد تأكدت من أن استبدال الوجهة أمر مقصود.
التحقق من كيفية معالجة المستودع لحالة الأحرف
يتيح إعداد core.ignoreCase في Git استخدام حلول بديلة لأنظمة الملفات التي لا تميز بين الأحرف الكبيرة والصغيرة. وتوضح وثائق Git أن أَمري clone وinit يقومان بفحص نظام الملفات وتعيين هذه القيمة عند الاقتضاء؛ كما تحذر من أن تغييرها قد يؤدي إلى سلوك غير متوقع. يمكنك فحص الإعداد الفعلي الساري باستخدام: وثائق git-config
git config --get core.ignoreCase
إذا لم تتم طباعة أي قيمة، فهذا يعني أن هذا الأمر لم يعثر على إعداد في التكوين الفعلي الساري. تجنب التعامل مع git config core.ignoreCase false كحل للمشكلة: فهو يغير افتراضات Git، ولكنه لا يجعل وحدة تخزين macOS غير الحساسة لحالة الأحرف قادرة على تخزين اسمين في الدليل نفسه يختلفان فقط في حالة الأحرف. الغرض الموثق لهذا الإعداد هو مساعدة Git على التوافق مع سلوك نظام الملفات الفعلي، وليس تغيير ذلك السلوك.
تأكيد إعادة التسمية، وإيداعها، ومشاركتها
قبل إجراء الإيداع، تحقق من الهجاء النهائي في git status، وافحص الملخص المُجهّز، وتأكد من عدم تضمين تغييرات غير ذات صلة. عندما تكون إعادة التسمية المُجهّزة صحيحة، قم بإيداعها برسالة واضحة:
git commit -m "Rename readme file to uppercase"
إذا كنت تنوي مشاركة الإيداع، فارفع (push) الفرع باستخدام سير عمل الفرع والمستودع البعيد المعتاد لديك. يتم تسجيل إعادة التسمية في الإيداع؛ ولن يستلمها المستودع البعيد إلا بعد إجراء الرفع. في وحدات تخزين APFS الحساسة لحالة الأحرف، يمكن أن تكون الأسماء التي تختلف فقط في حالة الأحرف متميزة ومستقلة، في حين يتعامل التكوين الافتراضي غير الحساس لحالة الأحرف معها باعتبارها الاسم نفسه. يظل الفحص المحلي الموثوق به هو أن يُظهر فهرس Git والحالة المُجهّزة مسار الوجهة المطلوب. Apple Support: File system formats available in Disk Utility on Mac
المصادر
git-mv — Git
git-config — Git
Files and directories — Apple Developer
Renaming a file — GitHub Docs
File system formats available in Disk Utility on Mac — Apple Support