Диффы и предпросмотр
Как читать дифф
| Переключатель | Что делает |
|---|---|
| Единый ↔ раздельный | Бок о бок — когда хочется сравнивать, друг под другом — когда хочется читать |
| По словам | Подсвечивает только изменившиеся токены внутри отредактированной строки — красным в старой, зелёным в новой |
| Игнорировать пробелы | Прячет перестановку отступов, чтобы всплыло настоящее изменение |
| Перенос (только в двух колонках) | Переносит длинные строки внутри колонки вместо прокрутки |
| Связано (две колонки, без переноса) | Прокручивает обе половины вместе, по вертикали и по горизонтали — выключено, каждая колонка сама по себе |
| ⌘F | Поиск внутри диффа, с переходом к следующему и предыдущему |
Перенос по умолчанию выключен: одна строка занимает один ряд, поэтому обе стороны остаются сопоставимыми строка к строке, а каждая половина прокручивается по горизонтали своей полосой. Включайте его, когда длинную строку хочется прочитать, а не догонять, — расплата в том, что строка, свёрнутая в три ряда, больше не стоит напротив своей пары. Каждый переключатель запоминает состояние между файлами и сеансами.
Без переноса обе половины по умолчанию прокручиваются связанно — по вертикали, что держит строки друг напротив друга, и по горизонтали, поэтому 90-я колонка слева стоит над 90-й справа. Развяжите их, когда стороны разошлись — блок с отступом против блока без него, переименование, сдвинувшее каждую строку, — или когда хочется сравнить два далёких участка одного файла, и оставьте каждую половину там, где её содержимое.

Над каждым диффом стоит семантическая сводка — что изменилось, символ за символом, а не строка за строкой.
Диффы изображений
Изменившиеся картинки получают настоящее сравнение: бок о бок или ползунок, которым перетаскиваешь границу между «до» и «после».

Полоса изменений и миникарта
Вид «Файл» для файла рабочего дерева — проиндексированного или нет, отслеживаемого или совершенно нового — несёт цветную полосу рядом с каждой строкой, изменённой с момента HEAD (или индекса — для проиндексированных файлов): зелёный для вставки, синий для изменения, маленький красный клин там, где строки удалены без замены. Нажмите на полосу, чтобы увидеть это изменение, не покидая файл — во всплывающем окне показаны удалённые и добавленные строки, с кнопками «вперёд»/«назад» для прохода по всем изменениям файла.

Миникарта, по умолчанию отключённая, добавляет уменьшенный обзор всего файла у правого края — нажмите или перетащите её, чтобы перейти к нужному месту, как это делала бы полоса прокрутки, если бы она заодно показывала форму файла. Обе настройки — локальные для машины, в разделе Настройки → Общие → Просмотр файла.
Ни одна из них не читает историю: переключитесь на Diff, Blame или более старый коммит — и полоса исчезнет, ведь эти виды уже показывают каждое изменение напрямую.
Предпросмотр чего угодно
Режим Предпросмотр отрисовывает файл, а не показывает его исходник: Markdown,
Word (.docx), Excel (.xlsx), PDF, видео, аудио, картинки — и код с подсветкой
синтаксиса для всего остального.

Property list от Apple
Info.plist и *.entitlements — это XML, а XML никто читать не собирался.
Предпросмотр вместо этого показывает схему «ключ — значение», ту самую, что
показывает собственный редактор plist в Xcode: вложенность сохранена, тип
каждого значения рядом.

Два ограничения. Двоичный plist (bplist00) распознаётся и называется, но не
декодируется — прогоните его через plutil -convert xml1, если хотите увидеть
здесь, хотя двоичный plist в репозитории обычно артефакт сборки, которому там не
место. А значения <data> показываются числом байт, а не base64: блоб вам ничего
не скажет, а профиль подготовки, отрисованный в панели, которую вы, возможно,
демонстрируете, скажет всем остальным слишком много.
Проекты Xcode
project.pbxproj — это один плоский словарь объектов, ссылающихся друг на друга
по идентификаторам, поэтому чтение по порядку почти ничего не говорит о проекте.
Предпросмотр проходит по этим ссылкам и восстанавливает три вещи, за которыми вы
пришли: цели с их фазами сборки, дерево групп так, как его рисует
навигатор Xcode, и настройки сборки по конфигурациям.

Это читалка, а не редактор — ничто здесь не пишет в проект. О том, что бывает, когда две ветки правят один и тот же файл, — в разрешении конфликтов.
Очень большие файлы
Предпросмотр и просмотр файла загружают файл в память целиком, поэтому оба отказываются открывать файлы сверх лимита размера (32 МБ для предпросмотра, 16 МБ для текста) и вместо этого показывают, насколько велик файл. Всё равно загрузить снимает лимит для этого файла — ничто не остаётся недоступным, большие загрузки просто требуют явного согласия. Файлы и диффы длиннее нескольких тысяч строк по-прежнему рендерятся целиком, но строки за пределами видимой области больше не компонуются и не отрисовываются — гигантский дифф lockfile-а перестаёт стоить памяти целого ноутбука.

Вкладка «Файлы»
Вкладка Файлы в левой панели ходит по самому рабочему дереву, а на папках висят бейджи статуса (добавлено / изменено / удалено), суммирующие то, что внутри.


См. также: Семантический дифф · Индексирование