MarkNode has built-in Git support so you can track changes, commit, and sync with a remote without leaving the editor.
Automatic Repository Detection
When you open a folder as a project, MarkNode checks whether it contains a Git repository. If one is found, Git features activate automatically — no configuration required. If the folder is not a Git repository, Git features remain hidden.
Status Bar
The status bar at the bottom of the window shows your current Git context at a glance:
- Branch name — the currently checked-out branch
- Change count — the number of modified, added, or deleted files. This count is clickable: click it to open the Source Control panel.
The branch indicator updates in real time. If you switch branches from the terminal or another tool, the status bar reflects the change without needing a reload. For ahead/behind counts and every Git action, use the Source Control panel described below.
The Source Control Panel
All Git actions live in the Source Control panel — a sidebar view modelled on the familiar Source Control pattern from editors like VS Code. Open it from the Source Control icon in the navbar (it appears after Recent Files, only when the project is a Git repository) or press Cmd+Shift+K on macOS or Ctrl+Shift+K on Windows and Linux.
The panel gives you everything in one place, without a modal dialog blocking your editor:
- Header — the current branch name and ahead/behind remote commit counts
- Changed files — grouped into Staged Changes and Changes (unstaged), each entry showing the file name, path, and a status letter
- Inline actions — hover a file to stage or unstage it; the Changes header has a Stage All action and the Staged Changes header has an Unstage All action
- Commit area — a message box and a Commit button, enabled once you have staged files and written a message
- Toolbar — Pull, Push, and Refresh actions
File Status Indicators
The file explorer colors each file’s name to indicate its Git status:
| Status | Meaning |
|---|---|
| Modified | The file has changes not yet committed |
| Added | A new file that has been staged |
| Untracked | A new file not yet staged |
| Deleted | A tracked file that has been removed |
| Renamed | A tracked file that has been moved or renamed |
| Conflict | The file has merge conflicts to resolve |
Status propagates upward through the folder tree — if any file inside a folder has changes, the parent folder’s name is colored too (taking the highest-priority status). This lets you spot changed areas of your project without expanding every directory.
Committing Changes
Committing happens inline in the Source Control panel — there is no separate dialog:
- Stage the files you want to include by hovering each one and clicking the stage action, or use Stage All in the section header.
- Write a commit message in the message box.
- Click Commit.
MarkNode runs the commit against your local repository, clears the message box, and updates the file list and the status bar change count. If the commit fails — for example, a pre-commit hook rejects it — the panel shows the error and keeps your commit message so you can try again.
Pulling and Pushing
The Push and Pull actions are in the Source Control panel toolbar.
- Pull fetches the latest commits from the remote and merges them into your current branch
- Push sends your local commits to the remote
If the push is rejected (for example, because the remote has commits you do not have locally), you will need to pull first and resolve any conflicts before pushing again.
Files Changed Outside MarkNode
If you modify files from the terminal or another editor, MarkNode detects the changes and reloads the affected files automatically. You do not need to manually refresh the editor or the file explorer.
This applies to Git operations too — running git checkout, git merge, or any command that modifies working-tree files will reflect immediately in the editor.