مقارنة النصوص (Diff Checker)

قارن نصين أو مقتطفين من الكود سطرًا بسطر. تُميَّز الأسطر المضافة والمحذوفة والمعدَّلة، وصولًا إلى الكلمات المختلفة بالضبط.

يعمل في متصفحكبدون تسجيللا يُرفع شيء

الصق نصًا في كلا المربعين لرؤية الاختلافات.

طريقة استخدام مقارنة النصوص

  1. الصق النص الأصلي على اليمين والنص المعدَّل على اليسار، أو افتح ملفين.
  2. تتحدث المقارنة أثناء الكتابة. اختر عرض جنبًا إلى جنب أو موحَّد.
  3. فعّل تجاهل المسافات البيضاء أو تجاهل حالة الأحرف أو تجاهل الأسطر الفارغة لإخفاء التشويش مثل إعادة المسافات البادئة.
  4. استخدم إخفاء غير المتغير للتركيز على التغييرات مع ثلاثة أسطر من السياق حول كل منها.
  5. انقر نسخ كملف patch أو تنزيل ‎.diff للحصول على unified diff قياسي يمكنك تطبيقه باستخدام git apply أو patch.

كيف تعمل أداة مقارنة النصوص هذه

تقسّم الأداة المدخلين إلى أسطر وتشغّل خوارزمية Myers للفروقات، وهي خوارزمية O(ND) نفسها التي يستخدمها git diff وdiff من GNU. تجد أقصر سلسلة من عمليات الإدراج والحذف تحوّل النص الأصلي إلى النص المعدَّل، لذا تُظهر النتيجة أقل عدد ممكن من الأسطر المتغيرة. تُتخطّى الأسطر المتطابقة في البداية والنهاية أولًا، مما يجعل مقارنة الملفات ذات آلاف الأسطر شبه فورية.

عندما يكون سطر محذوف وسطر مضاف متجاورين، يُقرنان كسطر معدَّل ويُقارنان مجددًا كلمة بكلمة. تحصل الكلمات التي تغيرت فعلًا على تمييز أقوى، فيبرز اسم متغير مُعاد تسميته أو رقم معدَّل داخل سطر طويل.

عرض جنبًا إلى جنب مقابل العرض الموحَّد

يضع عرض جنبًا إلى جنب النسخة الأصلية على اليمين والجديدة على اليسار، مع أرقام الأسطر لكليهما. وهو أسهل عرض لمراجعة النصوص وملفات الإعداد وتغييرات الكود القصيرة. أما العرض الموحَّد فيدمج الأسطر المحذوفة (-) والمضافة (+) في عمود واحد، وهي الصيغة التي تستخدمها أدوات مراجعة الكود وملفات patch.

صيغة unified diff (patch)

يتبع ملف patch المُصدَّر صيغة diff -u: ترويسة ---/+++، ثم كتل (hunks) تبدأ بـ @@ -l,s +l,s @@، حيث l هو رقم السطر الأول وs عدد أسطر الكتلة في كل ملف. تتضمن كل كتلة ثلاثة أسطر من السياق غير المتغير، لذا يمكن تطبيقها باستخدام patch -p0 أو git apply حتى لو تحركت الأسطر المجاورة.

متى تستخدم خيارات التجاهل

  • تجاهل المسافات البيضاء يعتبر الأسطر متساوية إذا اختلفت فقط في المسافات أو علامات Tab. استخدمه بعد إعادة المسافات البادئة للكود أو التحويل من Tab إلى مسافات.
  • تجاهل حالة الأحرف مفيد لملفات SQL وHTML والسجلات حيث لا تهم الأحرف الكبيرة.
  • تجاهل الأسطر الفارغة يخفي الأسطر التي أُضيفت أو حُذفت كتباعد فقط.

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

هل يُرفع نصي إلى أي مكان؟
لا. تتم المقارنة بالكامل في متصفحك باستخدام JavaScript. لا يُرسل أي شيء تلصقه إلى خادم، لذا يمكنك مقارنة الكود الخاص أو العقود أو ملفات الإعداد بأمان.
ما الحجم الأقصى للنصوص؟
تُقارن الملفات التي تضم عشرات الآلاف من الأسطر في أقل من ثانية على حاسوب محمول عادي. ولأن تكلفة الخوارزمية تزداد مع عدد الفروقات، فإن الملفين الضخمين المختلفين تمامًا يستغرقان أطول وقت.
هل يمكنني مقارنة ملفين بدلًا من اللصق؟
نعم. استخدم أزرار فتح ملف أعلى كل مربع لتحميل ملف محلي. يقرأ متصفحك الملف ولا يُرفع أبدًا.
لماذا يظهر سطر كمحذوف ومضاف بدلًا من معدَّل؟
تُقرن الأسطر كـ “معدَّلة” فقط عندما تكون كتلة من الأسطر المحذوفة مجاورة مباشرة لكتلة من الأسطر المضافة. وإذا كان السطران يشتركان في القليل جدًا من النص، يُتخطّى التمييز على مستوى الكلمات لأنه سيكون أكثر تشويشًا من إظهار السطر كاملًا كمتغير.
كيف أقارن كائنات JSON؟
استخدم أداة مقارنة JSON. فهي تقارن البنية بعد التحليل، فلا يُنتج ترتيب المفاتيح والتنسيق فروقات زائفة، وتعرض المسارات التي تغيرت بالضبط.

أدوات ذات صلة