MarkNode имеет встроенную поддержку Git, поэтому вы можете отслеживать изменения, выполнять коммиты и синхронизироваться с удалённым репозиторием, не покидая редактор.
Автоматическое обнаружение репозитория
Когда вы открываете папку как проект, MarkNode проверяет, содержит ли она репозиторий Git. Если репозиторий найден, функции Git активируются автоматически — настройка не требуется. Если папка не является репозиторием Git, функции Git остаются скрытыми.
Строка состояния
Строка состояния в нижней части окна показывает текущий контекст Git с одного взгляда:
- Имя ветки — текущая checked-out ветка
- Количество изменений — число изменённых, добавленных или удалённых файлов. На это число можно нажать: щёлкните по нему, чтобы открыть панель системы контроля версий.
Индикатор ветки обновляется в реальном времени. Если вы переключаете ветки из терминала или другого инструмента, строка состояния отразит изменение без перезагрузки. Для просмотра счётчиков опережения/отставания и выполнения всех действий Git используйте панель системы контроля версий, описанную ниже.
Панель системы контроля версий
Все действия Git находятся в панели системы контроля версий — боковой панели, построенной по знакомому шаблону Source Control из редакторов вроде VS Code. Откройте её значком Source Control на панели навигации (он появляется после Недавних файлов, только если проект является репозиторием Git) или нажмите Cmd+Shift+K на macOS либо Ctrl+Shift+K на Windows и Linux.
Панель собирает всё в одном месте, не блокируя редактор модальным окном:
- Заголовок — имя текущей ветки и счётчики коммитов опережения/отставания относительно удалённого репозитория
- Изменённые файлы — сгруппированы в Staged Changes (проиндексированные) и Changes (непроиндексированные), каждая запись показывает имя файла, путь и букву статуса
- Встроенные действия — наведите курсор на файл, чтобы проиндексировать его или снять индексацию; в заголовке Changes есть действие Stage All, а в заголовке Staged Changes — действие Unstage All
- Область коммита — поле сообщения и кнопка Commit, которая становится активной, когда есть проиндексированные файлы и написано сообщение
- Панель инструментов — действия Pull, Push и Refresh
Индикаторы статуса файлов
Проводник файлов окрашивает имя каждого файла, показывая его статус в Git:
| Статус | Значение |
|---|---|
| Изменён | Файл содержит изменения, которые ещё не закоммичены |
| Добавлен | Новый файл, который был проиндексирован |
| Неотслеживаемый | Новый файл, который ещё не проиндексирован |
| Удалён | Отслеживаемый файл, который был удалён |
| Переименован | Отслеживаемый файл, который был перемещён или переименован |
| Конфликт | В файле есть конфликты слияния, требующие разрешения |
Статус распространяется вверх по дереву папок — если какой-либо файл внутри папки изменён, имя родительской папки также окрашивается (берётся статус с наивысшим приоритетом). Это позволяет замечать изменённые области проекта, не разворачивая каждый каталог.
Коммит изменений
Коммит выполняется прямо в панели системы контроля версий — отдельного диалога нет:
- Проиндексируйте файлы, которые хотите включить: наведите курсор на каждый и нажмите действие индексации, либо используйте Stage All в заголовке раздела.
- Напишите сообщение коммита в поле сообщения.
- Нажмите Commit.
MarkNode выполняет коммит в вашем локальном репозитории, очищает поле сообщения и обновляет список файлов и счётчик изменений в строке состояния. Если коммит не удался — например, его отклонил pre-commit хук — панель покажет ошибку и сохранит ваше сообщение коммита, чтобы вы могли попробовать снова.
Pull и Push
Действия Push и Pull находятся на панели инструментов панели системы контроля версий.
- Pull получает последние коммиты из удалённого репозитория и вливает их в вашу текущую ветку
- Push отправляет ваши локальные коммиты в удалённый репозиторий
Если push отклонён (например, потому что в удалённом репозитории есть коммиты, которых нет у вас локально), вам потребуется сначала выполнить pull и разрешить конфликты, прежде чем повторить push.
Файлы, изменённые вне MarkNode
Если вы изменяете файлы из терминала или другого редактора, MarkNode обнаруживает изменения и автоматически перезагружает затронутые файлы. Вам не нужно вручную обновлять редактор или проводник файлов.
Это относится и к операциям Git — выполнение git checkout, git merge или любой другой команды, изменяющей файлы рабочего дерева, немедленно отразится в редакторе.