Utilia

Сравняване на код (Diff)

Сравнете две версии на код един до друг или в един ред, със синтактично оцветяване, номера на редове и unified diff за копиране или изтегляне.

Как да сравните две парчета код

  1. Поставете старата версия в Оригинален код, а новата – в Променен код.
  2. Изберете Език или оставете Автоматично разпознаване: инструментът познава по кода и показва разпознатия език до статистиката.
  3. Изберете Изглед: Един до друг или В един ред (unified).
  4. Задайте нужните опции: Игнорирай интервалите и отстъпите, Игнорирай регистъра, Подчертай променените думи и Покажи само промените (3 реда контекст).
  5. Щракнете Сравни. След първото сравнение резултатът следва промените ви, докато пишете.
  6. Щракнете Копирай като unified diff или Изтегли .diff, за да използвате промяната като пач.

Размени страните разменя двете версии, което превръща добавянията в изтривания и обратно.

Как се чете резултатът

Премахнатите редове са оцветени в червено и принадлежат на оригинала, а добавените – в зелено и принадлежат на новата версия. Всеки ред запазва номера си от собствения си файл, така че можете да отидете право към него в редактора.

  • Един до друг поставя двата файла в две номерирани колони. Променен ред стои до новата си версия. При Подчертай променените думи се отбелязват думите, променени в реда; без нея и двата реда запазват пълните си цветове на синтаксиса.
  • В един ред (unified) показва една колона като при преглед на код: за всеки променен блок първо идват премахнатите редове (−), после добавените (+), с номерата на редовете в старата и в новата версия.
  • Покажи само промените (3 реда контекст) свива дългите непроменени участъци в маркер „⋯ N непроменени реда“, което прави големите файлове много по-лесни за преглед.

Редът със статистика брои добавените, премахнатите и непроменените редове.

Синтактично оцветяване

Оцветяването става във вашия браузър с highlight.js. Зарежда се само граматиката на избрания език, когато сравните за първи път, така че страницата остава лека. Поддържаните езици включват JavaScript, TypeScript, Python, Java, C#, C / C++, Go, Rust, PHP, Ruby, CSS, HTML / XML, JSON, YAML, SQL, Bash / Shell и Markdown. Автоматичното разпознаване ползва прости признаци (ключови думи, скоби, анализ на JSON); ако сгреши, изберете езика сами или изберете Обикновен текст.

Интервали, отстъпи и краища на редове

Игнорирай интервалите и отстъпите сравнява редовете, след като ги изреже и свие поредиците от интервали и табулации, така че файл, преотстъпен от 2 на 4 интервала или от табулации на интервали, не показва разлика. Краищата на редовете на Windows (CRLF) и Unix (LF) се нормализират преди сравнението, така че файл, променил само краищата на редовете, се отчита като еднакъв. Имайте предвид, че интервалите могат да имат значение в Python, YAML и Makefile: изключете опцията, когато отстъпът е значим.

Форматът unified diff

Експортираният пач използва стандартния unified формат, който четат git apply, patch и инструментите за преглед на код: заглавие с двете имена на файлове, после парчета, започващи с @@ -a,b +c,d @@, и три реда контекст около всяка промяна. Файловете се наричат original и changed с разширение според езика.

Често задавани въпроси

Качва ли се кодът ми на сървър?

Не. Сравнението и оцветяването се изпълняват локално във вашия браузър; кодът никога не напуска устройството ви.

С какво се различава от инструмента за сравняване на текст?

Използва същия механизъм за сравнение ред по ред, но добавя синтактично оцветяване, unified изглед, свиване на контекста и обработка на интервалите, пригодена за код.

Защо два реда се показват като променени, макар да изглеждат еднакви?

Вероятно се различават в невидими символи: интервали в края, табулации вместо интервали или неразкъсваем интервал. Отметнете Игнорирай интервалите и отстъпите, за да се уверите.

Мога ли да приложа изтегления пач с Git?

Да. Запазете го и изпълнете patch original.js < changes.diff или нагласете имената на файловете в заглавието и използвайте git apply.

Колко големи могат да бъдат фрагментите?

Няколко хиляди реда се сравняват бързо. Ако два много големи файла са напълно различни, инструментът спира след няколко секунди и ви моли да сравните по-малки части.