Utilia

Jämför kod (diff)

Jämför två versioner av kod sida vid sida eller i en kolumn, med syntaxmarkering, radnummer, blankstegsalternativ och en unified diff att kopiera.

Så jämför du två kodavsnitt

  1. Klistra in den gamla versionen i Ursprunglig kod och den nya i Ändrad kod.
  2. Välj Språk, eller låt det stå på Identifiera automatiskt: verktyget gissar utifrån koden och visar det identifierade språket bredvid statistiken.
  3. Välj en Vy: Sida vid sida eller I en kolumn (unified).
  4. Ställ in de alternativ du behöver: Ignorera blanksteg och indrag, Ignorera skiftläge, Markera ändrade ord och Visa bara ändringar (3 rader sammanhang).
  5. Klicka på Jämför. Efter den första jämförelsen följer resultatet dina ändringar medan du skriver.
  6. Klicka på Kopiera som unified diff eller Ladda ner .diff för att återanvända ändringen som en patch.

Byt sida byter plats på de två versionerna, så att tillägg blir borttagningar och tvärtom.

Så läser du diffen

Borttagna rader är rödtonade och hör till originalet. Tillagda rader är gröntonade och hör till den nya versionen. Varje rad behåller sitt radnummer från sin egen fil, så att du kan hoppa direkt dit i din kodredigerare.

  • Sida vid sida visar de två filerna i två numrerade kolumner. En ändrad rad står bredvid sin nya version. Med Markera ändrade ord markeras de ord som ändrats inom raden. Utan det behåller båda raderna sina fullständiga syntaxfärger.
  • I en kolumn (unified) visar en enda kolumn som i en kodgranskning: för varje ändrat block kommer de borttagna raderna (−) först och sedan de tillagda (+), med både gamla och nya radnummer.
  • Visa bara ändringar (3 rader sammanhang) fäller ihop långa oförändrade partier till en markering ”⋯ N oförändrade rader”, vilket gör stora filer mycket lättare att granska.

Statistikraden räknar tillagda, borttagna och oförändrade rader.

Syntaxmarkering

Markeringen görs i din webbläsare med highlight.js. Bara grammatiken för det valda språket laddas, när du jämför första gången, så sidan förblir lätt. Språk som stöds är bland annat JavaScript, TypeScript, Python, Java, C#, C / C++, Go, Rust, PHP, Ruby, CSS, HTML / XML, JSON, YAML, SQL, Bash / Shell och Markdown. Den automatiska identifieringen bygger på enkla ledtrådar (nyckelord, klamrar, JSON-tolkning). Gissar den fel väljer du språket själv eller tar Vanlig text.

Blanksteg, indrag och radslut

Ignorera blanksteg och indrag jämför raderna efter att ha trimmat dem och slagit ihop följder av mellanslag och tabbar, så en fil som indenterats om från 2 till 4 mellanslag, eller från tabbar till mellanslag, visar ingen skillnad. Radslut från Windows (CRLF) och Unix (LF) normaliseras före jämförelsen, så en fil där bara radsluten ändrats rapporteras som identisk. Tänk på att blanksteg kan spela roll i Python, YAML och Makefiles: stäng av alternativet när indraget har betydelse.

Formatet unified diff

Den exporterade patchen använder standardformatet unified som läses av git apply, patch och verktyg för kodgranskning: ett huvud med de två filnamnen, följt av block som börjar med @@ -a,b +c,d @@ och tre rader sammanhang runt varje ändring. Filerna heter original och changed med en filändelse för språket.

Vanliga frågor

Laddas min kod upp till en server?

Nej. Både jämförelsen och syntaxmarkeringen körs lokalt i din webbläsare. Koden lämnar aldrig din enhet.

Vad skiljer det här från verktyget för att jämföra text?

Det använder samma jämförelsemotor rad för rad, men lägger till syntaxmarkering, en vy i en kolumn, hopfällning av sammanhang och blankstegshantering anpassad för kod.

Varför visas två rader som ändrade fast de ser likadana ut?

De skiljer sig troligen i osynliga tecken: avslutande mellanslag, tabbar i stället för mellanslag eller ett hårt mellanslag. Kryssa i Ignorera blanksteg och indrag för att kontrollera.

Kan jag tillämpa den nedladdade patchen med Git?

Ja. Spara den och kör patch original.js < changes.diff, eller anpassa filnamnen i huvudet och använd git apply.

Hur stora kan kodavsnitten vara?

Flera tusen rader jämförs snabbt. Om två mycket stora filer är helt olika avbryter verktyget efter några sekunder och ber dig jämföra mindre delar.