مُقارنة نصية بدون جِت مراجعة التغييرات في الملفات والنصوص

نُشرت في
مُقارنة نصية بدون جِت: مراجعة التغييرات في الملفات والنصوص 1
إعلان · حذف؟

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

إليك كيفية اختيار الأداة المناسبة.

عندما تحتاج إلى مقارنة خارج جِت

مُقارنة جِت مُدمجة في سيرتك المُعتمدة عندما يتم تَخزين الملفات. لكن هناك العديد من الحالات التي تقع خارج هذا السياق:

  • ملفات التكوين — مقارنة nginx.conf قبل وبعد التغيير، خاصة إذا لم تكن الملف في مخزن
  • إسقاطات ردود API — اكتشاف ما تغير بين مُستندَين جُمعَت في وقتين مُتَبَعَين
  • استعلامات SQL — مقارنة استعلام يُنفذ في البيئة المُطوّرة مقارنةً بواحد يُنفذ في البيئة الإنتاجية
  • التوثيق — مراجعة وثيقة مُعدّة يدويًا قبل إرسالها

في هذه الحالات، ترغب في مقارنة نظيفة دون الحاجة إلى تَسجيل أو ملف مُعدّ للإدخال.

التعليمات diff التعليمات: الأعلام المهمة

إذا كنت على لينكس أو ماك أوس، diff مُثبت بالفعل. الاستخدام الأساسي هو:

diff file1.txt file2.txt

لكن الناتج الافتراضي مختصر. هذه الأعلام تجعله قابلًا للقراءة:

# Unified format (same as Git's diff output — most familiar)
diff -u file1.txt file2.txt

# Side-by-side comparison
diff -y file1.txt file2.txt

# Ignore whitespace differences (useful for formatting changes)
diff -w file1.txt file2.txt

# Combine: unified format, ignore whitespace
diff -uw file1.txt file2.txt

نُموذج مُوحد مُثال:

--- file1.txt   2026-03-01 10:00:00
+++ file2.txt   2026-03-05 14:30:00
@@ -1,4 +1,4 @@
 server {
-    listen 80;
+    listen 443;
     server_name example.com;
 }

الأسطر التي تبدأ بـ - تم حذفها، + تم إضافتها. السطور بدون تسمية هي سياق مُتَحَدِّث.

المقارنة الثلاثية: عندما يكون لديك ثلاث نسخ

تُقارن المقارنة القياسية بين مُلفين. تُعالج المقارنة الثلاثية نسخة ثالثة — الأصل المشترك. هذا هو الطريقة التي تعمل بها حلول تعارض التكامل، حتى خارج جِت.

ال diff3 التعليمات تُعالج هذا:

diff3 mine.txt base.txt theirs.txt

هذا يُظهر ما تغير في mine.txt — أي منهما تحتاجه؟ base.txt، وما تغير في theirs.txt — أي منهما تحتاجه؟ base.txt — تُشير إلى أي تعارضات. مفيد عندما يُعدلان شخصان مستندًا مُتَمَثِّلاً بشكل مستقل ويحتاجان إلى تسوية دون تكامل جِت.

المقارنة البرمجية: بايثون ونود

عندما تحتاج إلى مقارنة داخل سكربت — أو إنشاء مخرجات مقارنة داخل تطبيق — استخدم مكتبة بدلًا من التوجه إلى diff.

بايثون — difflib:

import difflib

text1 = open("file1.txt").readlines()
text2 = open("file2.txt").readlines()

diff = difflib.unified_diff(text1, text2, fromfile="file1.txt", tofile="file2.txt")
print("".join(diff))

difflib تتضمن أيضًا HtmlDiff لإنتاج مخرجات جانبية بصيغة HTML، و SequenceMatcher لإيجاد نسبة التشابه بين نصين — مفيد للإيجاد المُتَبَع.

نود diff مُتَّصل:

npm install diff
const Diff = require('diff');

const one = 'SELECT id, name FROM users WHERE active = 1;';
const two = 'SELECT id, name, email FROM users WHERE active = 1 LIMIT 100;';

const changes = Diff.diffWords(one, two);
changes.forEach(part => {
  if (part.added) process.stdout.write('\x1b[32m' + part.value + '\x1b[0m');
  else if (part.removed) process.stdout.write('\x1b[31m' + part.value + '\x1b[0m');
  else process.stdout.write(part.value);
});

ال diff مُتَّصل يدعم مقارنة أحرف، كلمات، سطور، جمل، JSON، وCSS بشكل مُباشر.

عندما يكون استخدام أداة عبر الإنترنت هو الخيار المناسب

التعليمات سريعة إذا كان لديك مُلفين مُوجودين على القرص. لكن عندما تُقارن نصًا نسخه من مصادر مختلفة — مثل خيط سلوك أو ردود API أو محتوى المُلصق — فتح سطر الأوامر وكتابة ملفات مؤقتة يُعدّ مُفرطًا.

أداة مقارنة نصية عبر المتصفح هي الطريقة الأسرع للحصول على:

  • مُقارنات فردية بدون ملفات على القرص
  • مشاركة مقارنة مع شخص لا يستخدم السطر الأوامر
  • فحص تغيير قبل وبعد نسخ دون أي إعداد

IO Tools مقارنة نصية تُعالج هذا مباشرة في المتصفح مع تضمين التنسيق ولا يتطلب إرسال ملفات. نسخ النصين، وانظر التغييرات فورًا.

مُقارنة البيانات المُهيكلة: JSON وYAML مختلفان

مُقارنة النص البسيط تعمل على السطر. يمتلك JSON وYAML هيكلًا — وتُنتج تغييرات في التنسيق (الإسقاط، ترتيب المفاتيح) تُنتج ضوضاء غير ذات معنى في مقارنة عادية.

لـ JSON، ابدأ بالتنقيح:

jq --sort-keys . file1.json > file1_normalized.json
jq --sort-keys . file2.json > file2_normalized.json
diff -u file1_normalized.json file2_normalized.json

هذا يُزيل التغيرات في التنسيق ويُظهر فقط التغييرات الحقيقية في المحتوى. أما بالنسبة لـ YAML، فإن أدوات مثل dyff تُفهم الهيكل وتُبلغ عن التغييرات بشكل معنوي بدلًا من السطر بسط.

الاستخدامأفضل أداةملحوظات
ملفات نصية بسيطةdiff -uمُتَّسقة، تعمل في كل الأماكن
مُقارنة جانبية في السطر الأوامرdiff -yمُخرج واسع، مناسب للملفات القصيرة
حل التعارضات (بدون جِت)diff3مُقارنة ثلاثية
مُقارنة برمجية أو تلقائيةبايثون difflib أو نود diffإدراجها في خطوط التدفق أو التطبيقات
مُقارنة سريعة عبر نسخIO Tools مقارنة نصيةمُقارنة عبر المتصفح، بدون إعداد
JSON مع تغييرات في التنسيقjq تنقيح + diffترتيب المفاتيح، ثم المقارنة
ياملdyff, yamldiffمُتَّسقة الهيكل، تُعطي إشارة أفضل

متى تستخدم الأداة

  • ملفان موجودان على القرصdiff -u
  • تحتاج إلى تجاهل الفراغاتdiff -uw
  • ثلاثة نسخ للاستدلالdiff3
  • إدراجها في خطوط التدفق أو السكربتdifflib أو ال diff مُتَّسقة npm
  • مُقارنة بين نسختين في المتصفحIO Tools مقارنة نصية
  • مُقارنة JSON → تنقيح باستخدام jq، ثم diff
  • مُقارنة YAML → استخدم dyff

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

هل تريد حذف الإعلانات؟ تخلص من الإعلانات اليوم

تثبيت ملحقاتنا

أضف أدوات IO إلى متصفحك المفضل للوصول الفوري والبحث بشكل أسرع

أضف لـ إضافة كروم أضف لـ امتداد الحافة أضف لـ إضافة فايرفوكس أضف لـ ملحق الأوبرا

وصلت لوحة النتائج!

لوحة النتائج هي طريقة ممتعة لتتبع ألعابك، يتم تخزين جميع البيانات في متصفحك. المزيد من الميزات قريبا!

إعلان · حذف؟
إعلان · حذف؟
إعلان · حذف؟

ركن الأخبار مع أبرز التقنيات

شارك

ساعدنا على الاستمرار في تقديم أدوات مجانية قيمة

اشتري لي قهوة
إعلان · حذف؟