MarkNode 内置 Git 支持,让你无需离开编辑器即可跟踪更改、提交并与远程仓库同步。
自动检测仓库
当你以项目方式打开一个文件夹时,MarkNode 会检查其中是否包含 Git 仓库。如果找到,Git 功能会自动启用——无需任何配置。如果该文件夹不是 Git 仓库,Git 功能将保持隐藏。
状态栏
窗口底部的状态栏一目了然地显示当前的 Git 上下文:
- 分支名称 —— 当前检出的分支
- 更改数量 —— 已修改、新增或删除的文件数量。此数字可点击:点击即可打开源代码管理面板。
分支指示器会实时更新。如果你从终端或其他工具切换分支,状态栏无需重新加载即可反映变化。若需查看领先/落后提交数以及执行各项 Git 操作,请使用下文介绍的源代码管理面板。
源代码管理面板
所有 Git 操作都集中在源代码管理面板中——这是一个侧边栏视图,沿用了 VS Code 等编辑器中常见的源代码管理模式。你可以通过导航栏中的源代码管理图标打开它(该图标位于最近文件之后,仅在项目为 Git 仓库时显示),或在 macOS 上按 Cmd+Shift+K、在 Windows 和 Linux 上按 Ctrl+Shift+K。
该面板将所有功能集中于一处,不会用模态对话框遮挡你的编辑器:
- 标题栏 —— 当前分支名称以及相对于远程仓库的领先/落后提交数
- 已更改文件 —— 分为暂存的更改和更改(未暂存)两组,每一项显示文件名、路径和状态字母
- 内联操作 —— 将鼠标悬停在文件上即可暂存或取消暂存;更改标题栏提供全部暂存操作,暂存的更改标题栏提供全部取消暂存操作
- 提交区域 —— 一个消息输入框和一个提交按钮,在你暂存了文件并填写消息后即可使用
- 工具栏 —— 拉取、推送和刷新操作
文件状态标识
文件浏览器会为每个文件名着色,以标示其 Git 状态:
| 状态 | 含义 |
|---|---|
| 已修改 | 文件有尚未提交的更改 |
| 已新增 | 已暂存的新文件 |
| 未跟踪 | 尚未暂存的新文件 |
| 已删除 | 已被移除的受跟踪文件 |
| 已重命名 | 已被移动或重命名的受跟踪文件 |
| 冲突 | 文件存在待解决的合并冲突 |
状态会沿文件夹树向上传递——如果某个文件夹内有任何文件发生更改,其父文件夹的名称也会被着色(采用优先级最高的状态)。这样你无需展开每个目录,就能发现项目中发生变化的区域。
提交更改
提交操作直接在源代码管理面板中内联完成——没有单独的对话框:
- 将鼠标悬停在要包含的文件上并点击暂存操作,或使用分组标题栏中的全部暂存。
- 在消息框中填写提交消息。
- 点击提交。
MarkNode 会针对你的本地仓库执行提交,清空消息框,并更新文件列表和状态栏中的更改数量。如果提交失败——例如被 pre-commit 钩子拒绝——面板会显示错误信息并保留你的提交消息,以便你重试。
拉取与推送
推送和拉取操作位于源代码管理面板的工具栏中。
- 拉取会从远程仓库获取最新提交,并将其合并到你当前的分支
- 推送会将你的本地提交发送到远程仓库
如果推送被拒绝(例如远程仓库存在你本地没有的提交),你需要先拉取并解决所有冲突,然后再次推送。
在 MarkNode 之外更改的文件
如果你从终端或其他编辑器修改文件,MarkNode 会检测到这些更改并自动重新加载受影响的文件。你无需手动刷新编辑器或文件浏览器。
这同样适用于 Git 操作——执行 git checkout、git merge 或任何修改工作树文件的命令,都会立即在编辑器中反映出来。