مقایسهٔ متن (Diff)
دو متن را مقایسه کنید و ببینید چه چیزی تغییر کرده، خطبهخط و کلمهبهکلمه، کنار هم یا بهصورت unified diff.
مقایسهٔ متن — پیدا کردن تفاوت دو متن
متن اصلی را در سمت چپ و نسخهٔ تغییریافته را در سمت راست بچسبانید تا همهٔ تفاوتها یکجا دیده شوند: خطهای حذفشده قرمز، خطهای اضافهشده سبز، و درون هر خط تغییرکرده دقیقاً همان کلمههایی که عوض شدهاند. این ابزار هم برای قرارداد و مقاله کار میکند و هم برای کد منبع، فایلهای پیکربندی و خروجی لاگ، و هر دو متن در تمام مدت داخل مرورگر شما میمانند.
پیدا کردن یک عدد تغییرکرده در یک سند دوصفحهای با چشم، کند و غیرقابلاعتماد است. ابزار مقایسه این کار را در چند میلیثانیه انجام میدهد و ویرگولی که جابهجا شده یا قیمتی که از ۴۰ به ۴۵ رسیده از چشمش نمیافتد.
روش مقایسهٔ دو متن
- نسخهٔ اصلی را در متن اصلی و نسخهٔ جدید را در متن تغییریافته بچسبانید.
- مقایسه همزمان با تایپ در پایین ظاهر میشود، همراه با شمار خطهای اضافهشده و حذفشده.
- کنار هم یا یکپارچه را انتخاب کنید و اگر این نوع تغییرها برایتان مهم نیست، نادیده گرفتن فاصلهها یا نادیده گرفتن بزرگی و کوچکی حروف را تیک بزنید.
- برای بردن تغییرها بهصورت یک وصله (patch)، روی کپی بهصورت unified diff بزنید.
خواندن نتیجه
| آنچه میبینید | معنایش |
|---|---|
| یک خط قرمز فقط در سمت چپ | خط حذف شده است |
| یک خط سبز فقط در سمت راست | خط اضافه شده است |
| یک خط قرمز و یک خط سبز کنار هم | خط تغییر کرده است؛ کلمههای علامتخورده همان چیزیاند که عوض شده |
| یک نوار خاکستری با یک عدد | خطهای بدون تغییر پنهان شدهاند تا تغییرها در دید بمانند |
گزینهٔ فقط تغییرها و ۳ خط اطرافشان بهطور پیشفرض روشن است؛ پس در یک فایل طولانی با دو ویرایش، فقط همان دو ویرایش با کمی زمینه نمایش داده میشوند، درست مثل بازبینی کد. برای دیدن کامل هر دو متن، تیک آن را بردارید.
کنار هم یا یکپارچه
حالت کنار هم دو نسخه را در دو ستون موازی با شمارهخطهای جداگانه میگذارد؛ سادهترین راه برای خواندن نثر و مقایسهٔ یک خط تغییرکرده با نسخهٔ اصلیاش. حالت یکپارچه یک ستون نشان میدهد که در آن خطهای حذفشده با منفی و خطهای اضافهشده با مثبت علامت میخورند؛ Git و بیشتر ابزارهای بازبینی کد diff را همینطور چاپ میکنند و روی صفحهٔ کوچک هم جای کمتری میگیرد.
سطح کلمه، نویسه یا خط
اول خطها مقایسه میشوند. وقتی یک خط حذفشده و یک خط اضافهشده به هم شبیه باشند، کنار هم قرار میگیرند و دوباره مقایسه میشوند و برجستهسازی درون خط تعیین میکند این مقایسه چقدر ریز باشد: کلمهها برای نثر و بیشتر کدها مناسب است، نویسهها تغییر یک رقم یا حرف در یک شناسه یا هش را پیدا میکند و خاموش فقط خطهای کامل را نشان میدهد. خطهایی که هیچ وجه مشترکی ندارند بهزور جفت نمیشوند؛ پس یک حذف بیربط با یک افزودن بیربط کلمهبهکلمه مقایسه نمیشود.
نادیده گرفتن چیزهایی که مهم نیستند
- نادیده گرفتن فاصلهها خطهایی را که فقط در تورفتگی، فاصله یا تب فرق دارند یکسان در نظر میگیرد. بعد از قالببندی دوبارهٔ کد یا وقتی یک ویرایشگر تبها را به فاصله تبدیل کرده، از آن استفاده کنید.
- نادیده گرفتن بزرگی و کوچکی حروف حروف بزرگ و کوچک را یکی میداند؛ برای کلیدواژههای SQL یا متنی که با حروف بزرگ و کوچک متفاوت دوباره تایپ شده به کار میآید.
- پایان خط هرگز تغییر حساب نمیشود: شکست خط ویندوز و یونیکس پیش از مقایسه یکسانسازی میشوند.
این ابزار چطور کار میکند
مقایسه با الگوریتم مایرز (Myers) انجام میشود، همان الگوریتمی که Git بهطور پیشفرض به کار میبرد. این الگوریتم کوچکترین مجموعهٔ خطهای اضافهشده و حذفشدهای را پیدا میکند که یک متن را به دیگری تبدیل میکند، پس نتیجه نشان میدهد واقعاً چه چیزی ویرایش شده، نه فهرستی طولانی از خطهای جابهجاشده. خطهایی که دو متن در ابتدا و انتها مشترک دارند اول کنار گذاشته میشوند و همین مقایسهٔ دو نسخه از یک فایل طولانی را سریع میکند: یک تغییر در فایلی با ۲۰٬۰۰۰ خط در کسری از ثانیه پیدا میشود.
ساختن وصله (patch)
کپی بهصورت unified diff یک وصلهٔ استاندارد میسازد با سرتیترهای --- و +++ و بخشهای @@ که هر کدام سه خط زمینه دارند. آن را در یک فایل ذخیره کنید؛ با git apply changes.diff یا patch -p0 < changes.diff اعمال میشود، به شرطی که نام فایلها در سرتیترها با فایلهای شما یکی باشد.
متنهای شما خصوصی میمانند
هر دو متن با JavaScript داخل همین صفحه مقایسه میشوند. هیچ چیز آپلود یا ذخیره نمیشود؛ همان چیزی که هنگام مقایسهٔ پیشنویس قرارداد، کد منتشرنشده یا هر چیز حاوی اطلاعات شخصی لازم دارید.
ابزارهای مرتبط
برای مقایسهٔ دو فایل JSON، اول هر دو را با فرمتکنندهٔ JSON قالببندی کنید تا ترتیب کلیدها و تورفتگی یکسان شود و بعد اینجا مقایسهشان کنید. برای اینکه بدون نگاه به محتوا بفهمید دو فایل بایتبهبایت یکساناند یا نه، چکسام آنها را با تولیدکنندهٔ هش مقایسه کنید.