Kas ir šis rīks?
Diff (atšķirību) rīks salīdzina divus tekstus un parāda minimālo izmaiņu kopu, kas vienu tekstu pārvērš otrā. Tā versiju kontroles sistēmas, piemēram, Git, rāda koda izmaiņas, un tas ir tikpat noderīgi, salīdzinot konfigurācijas failus, līgumus, rakstus vai jebkuru divu jebkā versiju.
Šis rīks salīdzina rindiņu pa rindiņai, izmantojot to pašu algoritmu saimi (garākā kopīgā apakšsecība), ko izmanto klasiskās diff utilītas, tāpēc rezultāts izskatās kā pazīstams koda pārskats: + pievienotām rindiņām, − noņemtām rindiņām.
Kāpēc to izmantot?
- Redzi, kas patiešām mainījies starp divām versijām, tā vietā, lai tās pētītu ar acīm.
- Pazīstams git stila iznākums: zaļi pievienojumi, sarkani dzēsumi, konteksta rindiņas starp tiem.
- Kopsavilkums ar pievienoto un noņemto rindiņu skaitu vienā skatienā.
- Darbojas ar jebkuru tekstu — kodu, konfigurācijām, dokumentiem, sarakstiem.
- Privāti: abi teksti paliek tavā pārlūkā, nekas netiek augšupielādēts.
Kā to lietot
- Ielīmē oriģinālo tekstu kreisajā laukā.
- Ielīmē mainīto versiju labajā laukā.
- Uzklikšķini "Salīdzināt".
- Izlasi rezultātu: zaļās rindiņas tika pievienotas, sarkanās — noņemtas, vienkāršās rindiņas ir nemainītas.
Piemērs
Ievade
Oriģināls:
rinda viens
rinda divi
rinda trīs
Mainīts:
rinda viens
rinda 2
rinda trīsIzvade
rinda viens
− rinda divi
+ rinda 2
rinda trīsVidējā rindiņa tika mainīta, ko diff parāda kā vecās rindiņas noņemšanu un jaunās pievienošanu.
Biežākie lietošanas gadījumi
- AI pārrakstītas rindkopas pārskatīšana: ielīmē oriģinālu un AI versiju, lai redzētu tieši, kuri teikumi mainīti, nevis pārlasītu visu no jauna, meklējot izmaiņas.
- Divu līguma melnrakstu salīdzināšana: juridiskās izmaiņas bieži ir vieglāk pārskatīt kā rindiņu diff nekā kā izsekotās izmaiņas, ja dokuments starp versijām ticis pārformatēts.
- Konfigurācijas faila pārbaude pēc izvietošanas: ielīmē .env vai YAML faila versiju "pirms/pēc", lai apstiprinātu, ka mainījās tikai paredzētās rindiņas.
- Tulkota teksta versiju salīdzināšana: redzi, kuras rindiņas tulkotājs vai redaktors patiešām mainījis starp melnrakstiem.
Ierobežojumi, kas jāzina
Šis ir rindiņu līmeņa diff, nevis vārdu līmeņa diff — ja pārvieto rindkopu no dokumenta sākuma uz beigām, nemainot tās tekstu, tas parādās kā pilna dzēšana plus pilns pievienojums, nevis kā "pārvietots" atzīme. Prozai, kur mainās tikai daži vārdi teikumā, vārdu līmeņa diff rīks izceltu mazāk teksta, taču rindiņu līmenis ir standarts kodam, konfigurācijām un strukturētiem dokumentiem, un tieši uz to koncentrējas šis rīks.
Kā darbojas salīdzināšanas algoritms
Rīks atrod garāko kopīgo apakšsecību (LCS) starp abiem tekstiem — lielāko rindiņu kopu, kas parādās vienā relatīvā secībā abās versijās, pat ja starp tām tika ievietotas vai noņemtas citas rindiņas. Viss šajā kopīgajā apakšsecībā tiek rādīts kā nemainīts konteksts; viss pārējais tiek klasificēts vai nu kā noņemts (tikai oriģinālā), vai kā pievienots (tikai jaunajā versijā). Tas ir tas pats algoritms, kas ir Unix diff utilītas un Git rindiņu salīdzināšanas pamatā, tāpēc rezultāta formāts izskatīsies uzreiz pazīstams, ja esi kādreiz pārskatījis pull request.
Viena praktiska sekas: ja rindiņa dokumentā parādās dublēta (tieši tas pats teksts parādās divreiz), algoritms to sasaista ar to atkārtojumu, kas dod mazāko kopējo diff — dažreiz radot nedaudz citu sapārošanu, nekā tu intuitīvi gaidītu, lai gan galīgais pievienoto/noņemto rindiņu skaits vienmēr ir pareizs neatkarīgi no tā, kurš dublikāts tika sasaistīts ar kuru.
Biežāk uzdotie jautājumi
Vai tas salīdzina vārdu pa vārdam vai rindiņu pa rindiņai?
Rindiņu pa rindiņai, tāpat kā git diff. Mainīta rindiņa parādās kā viens noņemums plus viens pievienojums. Rindiņu līmeņa diffi ir standarts kodam un konfigurācijām un paliek pārskatāmi arī lieliem tekstiem.
Kāpēc neliela izmaiņa parāda visu rindiņu kā mainītu?
Tāpēc, ka salīdzināšanas vienība ir rindiņa — jebkura izmaiņa tajā iezīmē visu rindiņu. Sadali garas rindkopas īsākās rindiņās, ja vajadzīga smalkāka detalizācija.
Vai atstarpēm ir nozīme?
Jā. Rindiņām jāsakrīt precīzi, tāpēc atstarpe rindiņas beigās vai atšķirīga atkāpe padara rindiņas par atšķirīgām. Tas ir apzināti — atstarpju atšķirības kodā un konfigurācijās ir reālas atšķirības.
Vai ir izmēra ierobežojums?
Stingra ierobežojuma nav, taču ļoti lieli teksti (desmitiem tūkstošu rindiņu) var aizņemt mirkli, jo salīdzināšana notiek lokāli tavā ierīcē.
Vai mani teksti tiek augšupielādēti salīdzināšanai?
Nē. Diff algoritms darbojas pilnībā tavā pārlūkā ar JavaScript. Abi teksti paliek tavā ierīcē — droši līgumiem, iekšējiem dokumentiem un vēl nepublicētam kodam.