Diff چیکر
دو متون پیسٹ کریں اور فرق کو نمایاں دیکھیں۔
Diff
- اصل متن کو متن A میں پیسٹ کریں۔
- تبدیل شدہ ورژن کو متن B میں پیسٹ کریں۔
- کوڈ/کنفگ کے لیے لائنیں یا نثر کے لیے الفاظ منتخب کریں۔
- اگر غیر مرئی تبدیلیاں شور پیدا کر رہی ہیں تو وائٹ اسپیس نظر انداز کریں یا کیس نظر انداز کریں ٹوگل کریں۔
- ذیل میں نمایاں کردہ آؤٹ پٹ پڑھیں — سبز شامل کیا گیا ہے، سرخ ہٹایا گیا ہے۔
یہ کیا کرتا ہے؟
Diff چیکر دو متون کا موازنہ کرتا ہے اور ٹھیک وہی دکھاتا ہے جو شامل کیا گیا، ہٹایا گیا یا غیر تبدیل شدہ چھوڑا گیا۔ لائنیں موڈ ہر لائن کو ایک یونٹ کے طور پر پرکھتا ہے — سورس کوڈ اور کنفگ کے لیے مثالی جہاں عام طور پر ایک وقت میں پوری لائن تبدیل ہوتی ہے۔ الفاظ موڈ وائٹ اسپیس پر تقسیم کرتا ہے اور نثر کے لیے بہتر ہے جہاں آپ ٹوکن-سطح کی ترامیم کی پرواہ کرتے ہیں۔
مثال
متن A:
function greet(name) {
console.log("Hello, " + name);
} متن B:
function greet(name) {
if (!name) name = "world";
console.log(`Hello, ${name}!`);
} لائن موڈ میں Diff:
function greet(name) {
+ if (!name) name = "world";
- console.log("Hello, " + name);
+ console.log(`Hello, ${name}!`);
} عام غلطیاں اور نقصانات
جب دو لائنیں ایک جیسی نظر آتی ہیں لیکن diff انہیں تبدیل شدہ کے طور پر فلیگ کرتا رہتا ہے، وجہ تقریباً ہمیشہ ایک غیر مرئی حرف یا کیس کا فرق ہے۔ یہاں عام مشتبہ افراد ہیں۔
- CRLF بمقابلہ LF لائن اختتام۔ Windows فائلیں لائنوں کو \r\n سے ختم کرتی ہیں، Unix فائلیں \n سے۔ یہاں تک کہ ایک حرف کا فرق بھی ہر لائن کو فلیگ کرتا ہے۔ وائٹ اسپیس نظر انداز کریں کو فعال کر کے درست کریں، یا dos2unix / اپنے ایڈیٹر کی ترتیبات کے ساتھ نارمل کریں۔
- پچھلے اسپیس۔ "foo " اور "foo" diff ہوتے ہیں جب تک کہ وائٹ اسپیس نظر انداز نہ ہو۔ ایک کنفگ فائل سیو جو پچھلے اسپیس ہٹاتی ہے ہر چھوئی ہوئی لائن کو تبدیل شدہ دکھائے گی۔
- ٹیبز بمقابلہ اسپیس۔ ایک ری فارمیٹ جو ٹیبز کو اسپیس سے بدلتا ہے (یا الٹا) ایگزیکٹ میچ موڈ میں ہر انڈینٹ شدہ لائن کو مختلف دکھاتا ہے۔ وائٹ اسپیس نظر انداز کریں ٹوگل کریں یا پہلے دونوں اطراف کو ایک جیسا ری فارمیٹ کریں۔
- بائٹ-آرڈر مارک (BOM)۔ BOM کے ساتھ UTF-8 کے طور پر محفوظ کی گئی فائلیں ایک غیر مرئی سے شروع ہوتی ہیں۔ وہ پہلی "لائن" ہمیشہ تبدیل شدہ نظر آئے گی جب BOM-لیس فائل کے خلاف diff کیا جائے۔ پیسٹ کرنے سے پہلے اپنے ایڈیٹر یا ہیکس ایڈیٹر میں BOM ہٹا دیں۔
- سمارٹ کوٹس یا نان-بریکنگ اسپیس۔ ورڈ پروسیسر سے پیسٹ کرنا " کو " سے یا عام اسپیس کو نان-بریکنگ اسپیس سے بدل سکتا ہے۔ وہ ایک جیسے نظر آتے ہیں لیکن مختلف کوڈ پوائنٹس ہیں۔ diff سے پہلے متن کو پلین ASCII پر نارمل کریں۔
- صرف کیس کا فرق۔ API اور api مختلف سٹرنگز ہیں جب تک آپ کیس نظر انداز کریں آن نہ کریں۔ اندرونی مماثلتیں اب بھی اصل متن دکھاتی ہیں؛ صرف موازنہ ڈھیلا ہوتا ہے۔
اکثر پوچھے جانے والے سوالات
لائن اور ورڈ موڈ میں کیا فرق ہے؟
لائن موڈ ایک وقت میں ایک لائن متن کا موازنہ کرتا ہے — اگر لائن پر کوئی حرف تبدیل ہو، پوری لائن کو A سے ہٹایا اور B میں شامل کیا ہوا فلیگ کیا جاتا ہے۔ ورڈ موڈ وائٹ اسپیس پر تقسیم کرتا ہے اور زیادہ باریک diff دکھاتا ہے، جو نثر کے لیے بہتر ہے۔ سورس کوڈ اور کنفگ فائلوں کے لیے، لائن موڈ تقریباً ہمیشہ وہی ہے جو آپ چاہتے ہیں۔
ایک جیسی نظر آنے والی لائنیں تبدیل شدہ کیوں دکھاتی ہیں؟
عام طور پر تین غیر مرئی فرقوں میں سے ایک: لائن اختتام (Windows پر CRLF بمقابلہ Unix پر LF)، پچھلے اسپیس، یا فائل کے آغاز پر بائٹ-آرڈر مارک (BOM)۔ پہلے دو کو چھوڑنے کے لیے "وائٹ اسپیس نظر انداز کریں" آن کریں۔ BOMs کے لیے، فائل کو ہیکس ایڈیٹر میں کھولیں یا پیسٹ کرنے سے پہلے پہلے کے بائٹس ہٹا دیں۔
کیا یہ حرف بہ حرف diff کرتا ہے؟
نہیں۔ لائن موڈ میں یہ فی لائن diff کرتا ہے؛ ورڈ موڈ میں یہ فی وائٹ اسپیس سے الگ ٹوکن diff کرتا ہے۔ حرف-سطح کے diffs زیادہ تر حقیقی متن کے لیے شور والا آؤٹ پٹ پیدا کرتے ہیں۔ اگر آپ کو مختصر سٹرنگز کے لیے حرف-سطح کے موازنے کی ضرورت ہے، انہیں ورڈ موڈ میں پیسٹ کریں — اگر کوئی اسپیس نہ ہو تو ہر حرف مؤثر طور پر اپنا ٹوکن بن جائے گا۔
ان پٹ کتنے بڑے ہو سکتے ہیں؟
Diff میموری میں چلتا ہے، لہذا عملی حد آپ کے براؤزر کی RAM ہے۔ فی طرف چند MB تک ٹھیک کام کرتا ہے؛ دسیوں MB مختصر طور پر ٹیب جما سکتا ہے کیونکہ نمایاں HTML رینڈر کرنا diff خود سے سست ہے۔ بہت بڑی فائلوں کے لیے، مقامی طور پر GNU diff یا git diff کے ساتھ diff چلائیں۔
کیا میں کیس یا وائٹ اسپیس نظر انداز کر سکتا ہوں؟
جی ہاں — دونوں ٹول بار میں ٹوگلز ہیں۔ "وائٹ اسپیس نظر انداز کریں" وائٹ اسپیس کے کسی بھی سلسلے کو برابر پرکھتا ہے، جو ری فارمیٹ شدہ کوڈ کے لیے آسان ہے۔ "کیس نظر انداز کریں" "Hello" اور "hello" کو ایک جیسا پرکھتا ہے۔ اندرونی مماثلتیں اب بھی اصل متن دکھاتی ہیں؛ صرف موازنہ ڈھیلا ہوتا ہے۔
کیا آپ وہ متن محفوظ کرتے ہیں جو میں دونوں باکس میں پیسٹ کرتا ہوں؟
نہیں۔ ہم یہاں پیسٹ کی گئی کوئی چیز نہیں رکھتے — نہ "پہلے" متن نہ "بعد" متن۔ جو کچھ آپ موازنہ کرتے ہیں وہ صفحہ بند یا ریفریش کرتے ہی ضائع ہو جاتا ہے۔ کوئی لاگ نہیں، آپ کے مواد پر کوئی اینالیٹکس نہیں۔ اگر آپ اضافی یقین دہانی چاہتے ہیں، آپ کے براؤزر کے developer tools آپ کو دکھائیں گے کہ کیا ہو رہا ہے۔