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.
- sinistra: alpha / beta / gamma
- destra: alpha / BETA / gamma / delta
- LCS = alpha, gamma (2 righe)
- 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.