Änderungen lesen

Diffs & Vorschauen

Einen Diff lesen

Schalter Was er tut
Unified ↔ geteilt Nebeneinander, wenn du vergleichen willst; übereinander, wenn du lesen willst
Wortgenau Hebt nur die geänderten Tokens innerhalb einer bearbeiteten Zeile hervor — rot auf der alten, grün auf der neuen
Whitespace ignorieren Blendet Neu-Einrückungen aus, damit die eigentliche Änderung sichtbar wird
Umbruch (nur geteilte Ansicht) Bricht lange Zeilen in ihrer Spalte um, statt sie zu scrollen
Verknüpft (geteilt, ohne Umbruch) Scrollt beide Hälften gemeinsam, vertikal und seitlich — aus scrollt jede Spalte für sich
⌘F Suchen innerhalb des Diffs, mit Sprüngen zum nächsten/vorherigen Treffer

Der Umbruch ist standardmäßig aus: Eine Zeile bleibt eine Zeile, damit beide Seiten Zeile für Zeile vergleichbar bleiben, und jede Hälfte scrollt mit eigener Leiste zur Seite. Schalte ihn ein, wenn du eine lange Zeile lieber liest als verfolgst — dafür steht eine über drei Zeilen umgebrochene Zeile ihrem Gegenstück nicht mehr gegenüber. Jeder Schalter merkt sich seinen Zustand über Dateien und Sitzungen hinweg.

Ohne Umbruch scrollen beide Hälften standardmäßig verknüpft — vertikal, was die Zeilen einander gegenüber hält, und seitlich, damit Spalte 90 links über Spalte 90 rechts steht. Löse die Verknüpfung, wenn die Seiten auseinandergelaufen sind — ein eingerückter Block gegen einen nicht eingerückten, eine Umbenennung, die jede Zeile verschoben hat — oder wenn du zwei weit auseinanderliegende Stellen derselben Datei vergleichen willst, und stelle jede Hälfte dort ab, wo ihr Inhalt liegt.

Geteilter Diff mit wortgenauer Hervorhebung

Über jedem Diff sitzt die semantische Zusammenfassung — was sich geändert hat, Symbol für Symbol statt Zeile für Zeile.

Bild-Diffs

Geänderte Bilder bekommen einen echten Vergleich: nebeneinander, oder mit einem Schieberegler, den du zwischen Vorher und Nachher ziehst.

Bild-Diff

Änderungsrand & Minimap

Die Dateiansicht einer Arbeitsverzeichnis-Datei — gestaged oder nicht, verfolgt oder brandneu — trägt neben jeder seit HEAD (oder dem Index, bei gestagten Dateien) geänderten Zeile einen farbigen Balken: Grün für eine Einfügung, Blau für eine Änderung, ein kleiner roter Keil dort, wo Zeilen ohne Ersatz entfernt wurden. Klick auf einen Balken zeigt diese Änderung, ohne die Datei zu verlassen — das Popup zeigt die entfernten und hinzugefügten Zeilen, mit Weiter/Zurück, um jede Änderung der Datei durchzugehen.

Änderungsrand mit geöffnetem Hunk-Popup, Minimap rechts

Die standardmäßig deaktivierte Minimap fügt am rechten Rand eine verkleinerte Übersicht der gesamten Datei hinzu — klicken oder ziehen, um darin zu springen, wie es ein Scrollbalken täte, wenn er auch die Form der Datei zeigen könnte. Beide sind pro Maschine umschaltbar unter Einstellungen → Allgemein → Dateianzeige.

Keines der beiden liest Historie: Wechsle zu Diff, Blame oder einem älteren Commit, und der Änderungsrand verschwindet — diese Ansichten zeigen jede Änderung bereits direkt.

Alles in der Vorschau

Der Modus Vorschau rendert die Datei, statt ihren Quelltext zu zeigen: Markdown, Word (.docx), Excel (.xlsx), PDF, Video, Audio, Bilder — und für alles andere Code mit Syntaxhervorhebung.

Markdown-Vorschau

Apple Property Lists

Info.plist und *.entitlements sind XML, und XML ist nicht das, was jemand lesen will. Die Vorschau zeigt stattdessen die Schlüssel/Wert-Gliederung — die Form, die auch Xcodes eigener Plist-Editor zeigt — mit erhaltener Verschachtelung und dem Typ jedes Werts daneben.

Eine Info.plist als Schlüssel/Wert-Gliederung

Zwei Grenzen. Eine binäre Plist (bplist00) wird erkannt und benannt, nicht dekodiert — schick sie durch plutil -convert xml1, wenn du sie hier willst, auch wenn eine binäre Plist im Repository meist ein Build-Artefakt ist, das dort nichts zu suchen hat. Und <data>-Werte erscheinen als Byte-Anzahl statt als Base64: ein Blob sagt dir nichts, und ein Provisioning Profile, das in ein Panel gerendert wird, das du vielleicht gerade teilst, sagt allen anderen zu viel.

Xcode-Projekte

Eine project.pbxproj ist ein flaches Wörterbuch von Objekten, die einander per ID referenzieren — sie der Reihe nach zu lesen sagt fast nichts über das Projekt. Die Vorschau folgt diesen Referenzen und baut die drei Dinge zurück, wegen denen du gekommen bist: die Targets mit ihren Build-Phasen, den Gruppenbaum, wie ihn der Xcode-Navigator zeichnet, und die Build-Einstellungen je Konfiguration.

Eine project.pbxproj als Targets, Dateibaum und Einstellungen

Es liest, es bearbeitet nicht — nichts davon schreibt ins Projekt. Was passiert, wenn zwei Branches dieselbe ändern, steht unter Konflikte lösen.

Sehr große Dateien

Vorschauen und die Dateiansicht laden eine Datei vollständig in den Speicher, daher lehnen beide Dateien oberhalb einer Größengrenze ab (32 MB für Vorschauen, 16 MB für Text) und zeigen stattdessen, wie groß die Datei ist. Trotzdem laden hebt die Grenze für genau diese Datei auf — nichts ist unerreichbar, große Ladevorgänge sind nur opt-in. Dateien und Diffs mit mehr als ein paar tausend Zeilen werden weiterhin vollständig gerendert, aber aus dem Sichtbereich gescrollte Zeilen werden nicht mehr layoutet und gezeichnet — ein riesiger Lockfile-Diff kostet damit nicht mehr den Speicher eines ganzen Laptops.

Eine Datei über der Größengrenze, mit Trotzdem laden

Der Dateien-Tab

Der Tab Dateien in der linken Seitenleiste durchsucht das Arbeitsverzeichnis selbst, mit Status-Badges an Ordnern (hinzugefügt / geändert / gelöscht), die zusammenfassen, was darin steckt.

Der Dateien-Tab mit einer Vorschau

Ordner-Badges, die aufsummieren, was sich in jedem Ordner geändert hat

Siehe auch: Semantischer Diff · Staging

Diese Übersetzung auf GitHub verbessern