Kas yra šis įrankis?
Skirtumų (diff) įrankis palygina du tekstus ir parodo minimalų pakeitimų rinkinį, kuris vieną paverčia kitu. Taip versijų kontrolės sistemos, tokios kaip Git, rodo kodo pakeitimus, ir tai vienodai naudinga lyginant konfigūracijos failus, sutartis, straipsnius ar bet kokias dvi bet ko versijas.
Šis įrankis palygina eilutę po eilutės naudodamas tą pačią pagrindinę algoritmų šeimą (ilgiausią bendrą poseką), kaip ir klasikinės diff programos, tad rezultatas skaitomas kaip įprasta kodo peržiūra: + pridėtoms eilutėms, − pašalintoms eilutėms.
Kodėl jį naudoti?
- Pamatykite, kas iš tikrųjų pasikeitė tarp dviejų versijų, vietoj to, kad lygintumėte akimis.
- Pažįstamas git stiliaus rezultatas: žalios pridėtos eilutės, raudonos pašalintos, tarp jų kontekstinės eilutės.
- Santrauka su pridėtų ir pašalintų eilučių skaičiumi iš karto.
- Veikia su bet kokiu tekstu — kodu, konfigūracijomis, dokumentais, sąrašais.
- Privatu: abu tekstai lieka jūsų naršyklėje, niekas neįkeliama.
Kaip naudoti
- Įklijuokite originalų tekstą kairiajame langelyje.
- Įklijuokite pakeistą versiją dešiniajame langelyje.
- Spustelėkite „Palyginti“.
- Perskaitykite rezultatą: žalios eilutės buvo pridėtos, raudonos — pašalintos, paprastos eilutės nepakitusios.
Pavyzdys
Įvestis
Originalas:
pirma eilutė
antra eilutė
trečia eilutė
Pakeista:
pirma eilutė
2 eilutė
trečia eilutėIšvestis
pirma eilutė
− antra eilutė
+ 2 eilutė
trečia eilutėVidurinė eilutė buvo pakeista, ką diff parodo kaip senos eilutės pašalinimą ir naujos pridėjimą.
Dažniausi naudojimo atvejai
- AI perrašytos pastraipos peržiūra: įklijuokite originalą ir AI versiją, kad pamatytumėte tiksliai, kurie sakiniai pasikeitė, vietoj to, kad iš naujo skaitytumėte viską ieškodami pakeitimų.
- Dviejų sutarties juodraščių palyginimas: teisinius pataisymus dažnai lengviau peržiūrėti kaip eilučių skirtumus nei kaip sekamus pakeitimus, kai dokumentas tarp versijų buvo performatuotas.
- Konfigūracijos failo tikrinimas po diegimo: įklijuokite .env ar YAML failo versiją prieš ir po, kad patvirtintumėte, jog pasikeitė tik numatytos eilutės.
- Verstų teksto redakcijų palyginimas: pamatykite, kurias eilutes vertėjas ar redaktorius iš tikrųjų pakeitė tarp juodraščių.
Apribojimai, kuriuos verta žinoti
Tai eilutės lygio, o ne žodžio lygio skirtumų palyginimas — jei perkeliate pastraipą iš dokumento viršaus į apačią nekeisdami jos teksto, tai rodoma kaip visiškas pašalinimas plius visiškas pridėjimas, o ne „perkelta“ žyma. Prozos tekstams, kur pasikeičia tik keli žodžiai sakinyje, žodžio lygio palyginimo įrankis paryškintų mažiau teksto, tačiau eilutės lygio yra standartas kodui, konfigūracijoms ir struktūrizuotiems dokumentams, ir būtent į tai orientuotas šis įrankis.
Kaip veikia palyginimo algoritmas
Įrankis suranda ilgiausią bendrą posekį (LCS) tarp dviejų tekstų — didžiausią eilučių aibę, kuri pasirodo ta pačia santykine tvarka abiejose versijose, net jei tarp jų buvo įterptos ar pašalintos kitos eilutės. Viskas, kas patenka į tą bendrą poseką, rodoma kaip nepakitęs kontekstas; visa kita klasifikuojama kaip pašalinta (yra tik originale) arba pridėta (yra tik naujoje versijoje). Tai tas pats pagrindinis algoritmas, kuriuo remiasi Unix diff programa ir Git eilutės lygio palyginimas, todėl rezultato formatas iš karto atrodys pažįstamas, jei kada nors peržiūrėjote pull request.
Praktinė pasekmė: jei eilutė kitur dokumente dubliuojasi (tiksliai tas pats tekstas pasirodo du kartus), algoritmas ją suporuoja su tuo pasikartojimu, kuris palieka bendrą skirtumų kiekį mažiausią — kartais gaunant šiek tiek kitokį suporavimą, nei intuityviai tikėtumėtės, nors galutinis pridėtų/pašalintų eilučių skaičius visada tikslus, nepriklausomai nuo to, kuris dublikatas su kuriuo suporuotas.
Dažniausiai užduodami klausimai
Ar palyginimas vyksta žodis po žodžio, ar eilutė po eilutės?
Eilutė po eilutės, kaip git diff. Pakeista eilutė rodoma kaip vienas pašalinimas ir vienas pridėjimas. Eilutės lygio skirtumai yra standartas kodui ir konfigūracijoms bei išlieka skaitomi didelio teksto atveju.
Kodėl nedidelis pakeitimas parodo visą eilutę kaip pakeistą?
Todėl, kad palyginimo vienetas yra eilutė — bet koks pakeitimas joje pažymi visą eilutę. Padalinkite ilgas pastraipas į trumpesnes eilutes, jei reikia tikslesnio detalumo.
Ar tarpai turi reikšmės?
Taip. Eilutės turi tiksliai sutapti, tad tarpas pabaigoje ar skirtingas įtraukimas eilutes daro skirtingas. Tai daroma sąmoningai — tarpų skirtumai kode ir konfigūracijose yra tikri skirtumai.
Ar yra dydžio apribojimas?
Griežto apribojimo nėra, bet labai dideli tekstai (dešimtys tūkstančių eilučių) gali užtrukti akimirką, nes palyginimas vyksta vietoje, jūsų įrenginyje.
Ar mano tekstai įkeliami palyginimui?
Ne. Skirtumų algoritmas vyksta visiškai jūsų naršyklėje naudojant JavaScript. Abu tekstai lieka jūsų įrenginyje — saugu naudoti su sutartimis, vidiniais dokumentais ir dar neišleistu kodu.