مراجعة PR قبل التعليق
عرض diff في GitHub رائع، لكن أحياناً تريد رؤية التغييرات الجوهرية فقط دون ضوضاء أداة التنسيق. الصق النسختين، فعّل 'تجاهل المسافات'، وستختفي إعادة التنسيق الشكلية — تاركةً تعديلات المنطق فقط.
قارن نصين أو شيفرتين مع إبراز الفروق على مستوى السطر والكلمة. عرض جنباً إلى جنب أو موحد، تجاهل المسافات وحالة الأحرف — كل ذلك داخل متصفحك بالكامل.
لا. الأداة بأكملها عبارة عن JavaScript يعمل داخل هذه الصفحة. تعمل خوارزمية diff (LCS) على معالجك ويُعرض الناتج مباشرةً في DOM. افتح DevTools ← Network وراقب — لا تُرسل أي طلبات أثناء عملية المقارنة. آمن للصق الشيفرة الداخلية أو بيانات العملاء أو مسودات العقود أو أي شيء لا تريد لأداة على خادم أن تُسجّله.
أولاً نُقسم المُدخلين إلى أسطر ونُشغّل خوارزمية LCS (أطول تتابع جزئي مشترك). الأسطر المتطابقة في الجانبين تُحدّد كمتساوية. الأسطر غير المتطابقة تُقرَن في صفوف 'تغيير' عند ظهور إضافة مجاورة لحذف. لكل تغيير مقترن، نُشغّل LCS ثانية على كلمات السطر (مفصولة بالمسافات) بحيث تُضاء فقط الكلمات المُعدَّلة فعلياً بالأحمر/الأخضر — لا السطر بأكمله.
ساحة عمل نظيفة وسريعة لمقارنة النصوص بدون إعلانات أو نوافذ منبثقة أو متعقّبات خارجية — مصممة للمطورين والكتّاب وكل من يحتاج إلى رصد ما تغيّر.
بدّل بنقرة واحدة بين العرض المقسّم (عمودان بإحساس IDE الكلاسيكي) والعرض الموحد (عمود واحد بعلامات +/−). يعرض كلا الوضعين أرقام الأسطر ويُبرز كل تغيير ضمن السطر.
عند تغيير سطرين، نُجري diff ثانٍ على مستوى الكلمة بحيث تتوهج الفروقات الفعلية فقط — لا السطر بأكمله. يسهّل ذلك اكتشاف خطأ مطبعي واحد في سطر من 200 حرف.
بدّل حساسية المسافات وحالة الأحرف لتصفية التغييرات الشكلية (إعادة تنسيق الإزاحة، تعديلات الكتابة بالأحرف الكبيرة) والتركيز على التعديلات الحقيقية.
يبقى النصان داخل تبويب متصفحك. تعمل خوارزمية diff محلياً عبر JavaScript. يمكنك التحقق من ذلك في DevTools ← Network: لا تُرسل أي طلبات أثناء كتابتك.
اطّلع بنظرة واحدة على عدد الأسطر المضافة والمحذوفة والمعدّلة. وبنقرة واحدة تُنسخ الفروقات إلى الحافظة لإلصاقها في مراجعة شيفرة أو رسالة commit.
بعد تحميل الصفحة، تُحسب كل بايت محلياً. يعمل في الطائرة أو خلف جدار حماية مؤسسي أو بدون شبكة على الإطلاق — مفيد لمراجعات الشيفرة السرّية.
الرياضيات تحت الغطاء أقدم من الويب — خوارزمية من عام 1965 تُسمى LCS، إضافة إلى تحسين قدّمه يوجين Myers عام 1986.
يُقسَّم المُدخلان عند \n (أو \r\n). يصبح كل سطر رمزاً (token). نُقارن الرموز — لا الأحرف — لأن أغلب التعديلات في الشيفرة أو المستندات الواقعية تُضيف أو تحذف أو تُعدّل أسطراً كاملة.
أطول تتابع جزئي مشترك هو أكبر مجموعة من الأسطر التي تظهر بالترتيب نفسه في كلا المُدخلين. نملأ جدول برمجة ديناميكية انطلاقاً من الزاوية السفلية اليمنى؛ تحتفظ كل خلية بطول LCS من ذلك الموضع حتى النهاية. يستغرق ذلك زمناً وذاكرة بمقدار O(m × n).
بدءاً من الزاوية العلوية اليسرى للجدول، نمشي إلى الأمام: إذا تطابق السطران الحاليان أصدرنا تساوٍ؛ وإلا نختار الاتجاه (يميناً أو أسفل) الذي يحافظ على طول LCS، فنُصدر حذفاً أو إدراجاً. الناتج تتابع من العمليات يُحوّل النص الأصلي إلى المعدّل.
عندما يأتي حذف متبوعاً بإدراج، نقرنهما في صف تغيير. ولإبراز الأجزاء المختلفة فقط داخل السطر، نُشغّل خوارزمية LCS نفسها مرة ثانية على كلمات كل جانب، مع التقسيم عند حدود المسافات.
حالات واقعية ستلجأ فيها إلى مدقق الفروقات.
عرض diff في GitHub رائع، لكن أحياناً تريد رؤية التغييرات الجوهرية فقط دون ضوضاء أداة التنسيق. الصق النسختين، فعّل 'تجاهل المسافات'، وستختفي إعادة التنسيق الشكلية — تاركةً تعديلات المنطق فقط.
كثيراً ما يحتاج المحامون وفِرَق العمليات إلى معرفة ما تغيّر بين الإصدار 1 والإصدار 2 من العقد. الصق النسختين، واحصل على diff ملوّن مع إبراز على مستوى الكلمة — بدون Word، وبدون 'تتبّع التغييرات'، وبدون رفع شروط سرّية إلى خادم خارجي.
هل شغّلت sed أو awk أو regex من Python على ملف إعدادات؟ الصق الأصل والناتج هنا للتأكد من أن السكربت عدّل ما توقعته فقط. الإبراز على مستوى الحرف يلتقط تعديلات شاردة قد تُفلت من الفحص البصري السريع.
زوج ترجمة (المصدر مقابل الترجمة، أو ترجمتان للمصدر نفسه) — يجعل diff على مستوى الكلمة من السهل العثور على كلمة مفقودة أو عبارة مكررة أو علامة ترقيم منقلبة فاتت المُدقّقين.
النصوص التي تقارنها عادةً ما تكون خاصة: شيفرة من مستودعات داخلية، مسودات عقود، تصدير بيانات عملاء، أو نسخ منتجات لم تُطلق بعد. لصقها في خادم غريب يُنشئ سجلاً لا تتحكم به. مدقق فروقات iKit هو JavaScript محمّل أصلاً في تبويب متصفحك — تجري المقارنة على معالجك ولا تلامس أي مقبس شبكة.
Deep-dive tutorials and tool comparisons from the iKit blog.
Pretty-print, validate, and structurally diff messy JSON — when each one is the right tool.
Compare the best Markdown editors of 2026; pair with the diff tool for tracking documentation changes.
لا. الأداة بأكملها عبارة عن JavaScript يعمل داخل هذه الصفحة. تعمل خوارزمية diff (LCS) على معالجك ويُعرض الناتج مباشرةً في DOM. افتح DevTools ← Network وراقب — لا تُرسل أي طلبات أثناء عملية المقارنة. آمن للصق الشيفرة الداخلية أو بيانات العملاء أو مسودات العقود أو أي شيء لا تريد لأداة على خادم أن تُسجّله.
أولاً نُقسم المُدخلين إلى أسطر ونُشغّل خوارزمية LCS (أطول تتابع جزئي مشترك). الأسطر المتطابقة في الجانبين تُحدّد كمتساوية. الأسطر غير المتطابقة تُقرَن في صفوف 'تغيير' عند ظهور إضافة مجاورة لحذف. لكل تغيير مقترن، نُشغّل LCS ثانية على كلمات السطر (مفصولة بالمسافات) بحيث تُضاء فقط الكلمات المُعدَّلة فعلياً بالأحمر/الأخضر — لا السطر بأكمله.
يعرض الوضع المقسّم النصين جنباً إلى جنب مع أرقام أسطر مقترنة — أقرب إلى ما يبدو عليه diff في بيئات IDE (VS Code وJetBrains). أما العرض الموحد فيُظهر عموداً واحداً بأسطر تبدأ بـ +/− — أقرب إلى ما يطبعه `git diff`. اختر ما يناسب سير عملك؛ كلاهما يعرض البيانات نفسها.
إعادة تنسيق الشيفرة (تشغيل Prettier، التبديل بين Tab والمسافة، توحيد نهايات الأسطر) تضيف ضوضاء بصرية تُخفي التغييرات الفعلية. تفعيل 'تجاهل المسافات' يطوي تتابعات المسافات/الجدولة إلى مسافة واحدة ويقتطع أطراف السطر قبل المقارنة — لكي ترى التعديلات الجوهرية فقط لا الشكلية.
تستخدم خوارزمية LCS ذاكرة بمقدار O(m × n) حيث m وn عدد الأسطر في كل جانب. يحدّ iKit المقارنة عند نحو 4 ملايين خلية (≈16 ميغابايت)، وهو ما يستوعب بأريحية بضعة آلاف من الأسطر مقابل بضعة آلاف. للفروقات الأكبر (تفريغات قواعد بيانات كاملة، سجلات ملفات بالكامل)، استخدم أداة CLI مثل `diff` أو `git diff --no-index` — فهي تستخدم خوارزمية أذكى (Myers diff) تتدرج لملايين الأسطر.