git replace
استبدال كائن بآخر دون إعادة كتابة السجل
يطلب الأمر 'git replace' من Git استخدام كائن بدل آخر أينما ظهر — مثلًا لتطعيم سجل قديم بسجل جديد، أو لإخفاء commit معطوب — دون إعادة كتابة أي commit. تُخزَّن الاستبدالات كمراجع تحت refs/replace/ ويمكن مشاركتها أو إزالتها. تتبعها معظم الأوامر؛ ويعلّم git log الـ commits المستبدلة.
الصيغة
git replace [-f] <object> <replacement>
git replace --graft <commit> [<parent>...]
git replace -d <object>...
git replace -lأمثلة
تطعيم سجل
git replace --graft <first-new-commit> <last-old-commit>وصل سجل قديم مستورد.
السرد
git replace -lالكائنات المستبدلة.
تراجع
git replace -d <object>إزالة استبدال.
أمثلة على سير العمل
git fetch old-repoجلب الـ commits القديمة
git replace --graft <new-root> old/mainجعل الجذر الجديد امتدادًا للسجل القديم
حل المشكلات
الاستبدال غير مرئي للآخرين
السبب: لا يُدفع refs/replace افتراضيًا
git push origin "refs/replace/*"
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓استخدم --graft لوصل السجلات؛ وتجنّب الاستبدالات في الإصلاحات اليومية.
أخطاء متكررة
- ✗نسيان أن الاستبدالات محلية ما لم تدفع refs/replace/*.
الأسئلة الشائعة
نعم: git --no-replace-objects <command>.