Перейти к содержимому

Ревью и коммит изменений

Changes показывает проиндексированные, непроиндексированные, неотслеживаемые и конфликтующие файлы — списком или деревом, с фильтром и видами All / Unstaged / Staged. Если выбрать файл, откроется его diff: пронумерованные строки с горизонтальной прокруткой и правильными версиями «до» и «после» для индекса, рабочей копии и коммитов, включая переименования.

  • Индексируйте целый файл, фрагмент (hunk) или выбранные строки изменённого текстового файла — или убирайте их из индекса.
  • Когда вы индексируете, убираете из индекса или отменяете изменения (discard) в просматриваемом файле, ffgit переходит к следующему файлу.

Индексация и её отмена проходят через очередь изменений (change queue): файлы перемещаются сразу и остаются полупрозрачными, пока Git их не обработает, так что можно индексировать файл за файлом без ожидания. Записи выполняются по одной, по порядку. Если index.lock занят, ffgit несколько секунд повторяет попытку — и никогда не удаляет этот файл, — а при ошибке файлы возвращаются на место. Меню Change queue на панели инструментов списка файлов показывает каждую запись с действиями Cancel, Retry и Dismiss.

В форме коммита есть заголовок (summary), необязательное описание и число проиндексированных файлов. Amend нужно выбрать явно. Если коммит не удался, черновик сохраняется — как и всё, что вы наберёте после. Хуки и подпись выполняются ровно так, как настроено в Git.

Перед коммитом ffgit помечает проиндексированные файлы, на которые стоит взглянуть:

  • файл больше лимита размера (по умолчанию 50 МиБ, задаётся в Cleanup › Suggestions);
  • результаты сборки — по правилам Build output in Git;
  • вероятный секрет, найденный по имени (.env, *.pem, *.p8, *.p12, id_ed25519, *private-key*…), — содержимое ffgit не читает;
  • файл, указанный в .ffignore.

Commit и Amend один раз перечисляют такие файлы с причиной и предлагают Commit anyway (всё равно закоммитить) или Unstage them (убрать их из индекса). Только это нажатие убирает файлы из индекса — и только эти файлы.

History строит топологический граф коммитов по веткам, тегам и удалённым репозиториям — с фильтрацией веток, рёбрами слияний и постраничной загрузкой. Метки отличают локальные ветки, remote-tracking-ветки, теги, ветки, извлечённые в другом worktree, и detached HEAD других worktree. Искать в истории можно по сообщению, автору, хешу, пути или коду.

  • Переключайте и создавайте ветки; перед переключением ffgit запрашивает подтверждение.
  • Находите, создавайте и открывайте связанные worktree. Новый worktree извлекает свои сабмодули (All — по умолчанию, Top level или None).
  • Clone, fetch, pull и push. Профиль GitHub или GitLab может содержать SSH-ключ или сохранённый токен, который используется только для этого процесса Git.

Видимые репозитории обновляются после операций Git, по событиям файловой системы и по опросу статуса раз в две секунды; окна в фоне приостанавливают наблюдение за файлами.