Skip to main content

Confronta due blocchi di testo e vedi le differenze.

+3 aggiunte-2 rimosse
-function greet(name) {
+function greet(name, greeting = "Hello") {
- console.log("Hello " + name);
+ console.log(greeting + " " + name);
}
greet("World");
+greet("Alice", "Hi");
Tutti i calcoli sono eseguiti localmente nel tuo browser. Nessun dato viene inviato al server.

I risultati hanno carattere informativo. Verificali con altre fonti.

Come funziona il confronto tra testi

Un diff trova l'insieme minimo di inserimenti e cancellazioni che trasforma un testo in un altro. Non rileva che una riga si è «spostata» o «modificata»: sono interpretazioni che un visualizzatore sovrappone a una cancellazione seguita da un inserimento.

Come funziona

  • Calcola la più lunga sottosequenza comune dei due input, poi segnala tutto ciò che ne resta fuori come aggiunto o rimosso.
  • Lavora riga per riga per impostazione predefinita, il che rende i diff leggibili per il codice e inutili per la prosa reimpaginata.
  • Segna una riga modificata come una cancellazione più un inserimento, perché è esattamente ciò che è a livello di algoritmo.
più lunga sottosequenza comune (LCS)
  righe solo a sinistra → cancellazioni
  righe solo a destra   → inserimenti
  righe nella LCS       → invariate

somiglianza ≈ 2 × lunghezza LCS / (righe sin. + righe des.)

Esempio pratico

Un file di tre righe con una modificata e una aggiunta.

  1. sinistra: alpha / beta / gamma
  2. destra: alpha / BETA / gamma / delta
  3. LCS = alpha, gamma (2 righe)
  4. beta → cancellazione, BETA → inserimento, delta → inserimento

Vengono riportate tre modifiche, non due: la modifica di beta conta come una cancellazione più un inserimento. Somiglianza = 2 × 2 / (3 + 4) = 57%.

Come leggere il risultato

  • Un intero paragrafo reimpaginato a un'altra larghezza produce un diff in cui ogni riga risulta cambiata, benché sia cambiata a stento una parola. Per la prosa passa a un diff per parole, oppure confronta il sorgente prima dell'a capo automatico.
  • Gli spazi a fine riga e le differenze di fine riga generano modifiche fantasma. Se un intero file appare modificato senza differenze visibili, controlla prima CRLF contro LF.
  • L'output dipende da quale lato chiami «originale». Scambiare gli input trasforma ogni inserimento in una cancellazione, il che conta quando si legge una revisione.
  • Questo gira nel tuo browser, quindi incollare qui un file riservato non lo carica da nessuna parte. Non vale per ogni strumento di diff online.

Domande frequenti

Perché il mio diff segna l'intero file come modificato?
Quasi sempre i fine riga o l'indentazione. Un file salvato su Windows e modificato su Linux differisce in modo invisibile su ogni riga. Attiva il confronto che ignora gli spazi, oppure normalizza prima i fine riga.
Può mostrare che ho spostato un blocco di codice?
Non direttamente: uno spostamento è una cancellazione in un punto e un inserimento in un altro, e il diff standard lo riporta così. Alcuni strumenti rilevano gli spostamenti come passaggio successivo su quell'output grezzo.