Git
Плагин Git показывает состояние репозитория Git прямо в панели файлов — без отдельного приложения и без
терминала. Он добавляет две колонки, подменю Git, закреплённую панель для подготовки и фиксации изменений
и окна для истории, blame, веток, конфликтов и перебазирования. Он работает через git, уже установленный на
вашем Mac. Это плагин, поэтому его можно выключить или удалить в Конфигурация ▸ Плагины….
Что он добавляет¶
- Две колонки в списке файлов — Состояние Git и Ветка. У каждого файла показаны значок и короткое слово состояния (Изменён, Добавлен, Удалён, Не отслеживается, Переименован, Скопирован, Конфликт, Игнорируется, Тип изменён), с пометкой (подготовлен), если изменение уже в индексе; колонка Ветка показывает ветку, на которой стоит репозиторий этого файла. Колонки включаются в Конфигурация ▸ Колонки… (см. Режимы просмотра и сортировка).
- Меню Git — в Команды ▸ Git и в контекстном меню файла.
(Рисунок: «Состояние Git» называет ветку и каждое изменение в рабочем дереве.)
Панель: подготовить, зафиксировать, синхронизировать¶
Команды ▸ Git ▸ Панель закрепляет вид, который делит рабочее дерево на подготовленное, изменённое и неотслеживаемое. Выберите файлы и используйте Подготовить, Снять подготовку или Отменить…, введите сообщение и нажмите Зафиксировать — с Исправить изменение вкладывается в предыдущую фиксацию. Получить и Отправить рядом, там, где фиксация и так происходит; оба показывают ход и их можно прервать.
Фиксируется индекс, а не git commit -a: фиксируется то, что вы подготовили.
История, blame и веб¶
- История… перечисляет фиксации с графом дорожек, ссылки, указывающие на каждую (
● main,↗ origin/main,⚑ v1.0), и файлы, которых коснулась каждая фиксация. Return или двойной щелчок открывает версию этого файла против её предшественницы в окне сравнения. Откатить фиксацию и Cherry-pick тоже там, и оба отказываются заранее, если рабочее дерево не чисто. - История файла… — то же окно для одного файла.
- Blame (список)… показывает каждую строку с её фиксацией, автором и датой. Blame в редакторе помещает те же сведения на поле редактора, рядом с номерами строк: наведение на строку показывает сообщение фиксации, щелчок открывает её против предшественницы.
- Открыть в вебе открывает файл, фиксацию или ветку на GitHub, GitLab, Bitbucket или Azure DevOps, собрав адрес из URL удалённого репозитория — без учётной записи и без токена. Для узла, устройство ссылок которого ему неизвестно, он предлагает страницу репозитория, а не гадает.
Ветки, отложенные изменения и метки¶
Ветки, отложенные изменения и метки… перечисляет всё трое. Переключить, создать, слить или удалить ветку; отправить, извлечь или отбросить отложенное; создать, удалить или отправить метку либо переключиться на неё — метка не ветка, поэтому заранее сказано, что HEAD останется отсоединённым. Выборка, Получить и Отправить — в том же окне, и их можно прервать на ходу.
Отправка метки намеренно сделана отдельным действием: git push метки с собой не берёт.
Конфликты¶
Разрешить конфликт… перечисляет конфликтные области файла под курсором и принимает решение по каждой:
наше, их, оба — или оставить открытой. Затем Записать файл или Записать и подготовить. Плагин
отказывается подготавливать, пока хоть одна область открыта — Git с готовностью зафиксирует метки <<<<<<< —
и скорее не тронет файл, чьи метки он не может прочесть, чем станет их угадывать. Для области, где обе стороны
нужно переплести вручную, Открыть в редакторе — одна кнопка.
Перебазирование¶
Перебазировать… перечисляет фиксации впереди вышестоящей ветки — те, которых больше ни у кого пока нет — и позволяет их сжать, присоединить как правку, отбросить, переставить или переписать сообщение, прежде чем ветка будет переписана. Если перебазирование остановится на конфликте, то же окно становится Продолжить / Пропустить фиксацию / Прервать, чтобы недоделанное перебазирование не пришлось завершать в терминале.
Игнорирование файлов и учётные данные¶
- Игнорировать этот файл…, Игнорировать этот тип файлов… и Игнорировать эту папку… вписывают
нужный шаблон в
.gitignore— привязанный там, где положено, чтобы игнорирование этой папкиbuildне игнорировало каждую папку с именемbuild. - Учётные данные… сообщают, как этот репозиторий проходит проверку подлинности: SSH или HTTPS, настроен ли помощник учётных данных, запущен ли агент SSH и держит ли он ключ. Где это помогает, предлагается ровно одно действие — позволить Git хранить учётные данные в связке ключей macOS. Плагин никогда не спрашивает парольную фразу, не показывает и не сохраняет её.
Примечания¶
- Плагин использует системный Git по пути
/usr/bin/git. Если Git не установлен, команды сообщают, что Git недоступен. (Его приносят Xcode Command Line Tools.) - Состояние репозитория читается один раз на папку и кэшируется, чтобы прокрутка большого репозитория оставалась быстрой; кэш обновляется после любой команды, меняющей дерево, и следует за фиксацией, сделанной вне приложения.
- Связанные рабочие деревья и подмодули поддерживаются: файл внутри подмодуля показывает состояние и ветку подмодуля, а не родительского репозитория.
- У каждого списка есть контекстное меню, Return выполняет основное действие, а Cmd+R обновляет окно.