使用 Git 进行版本控制

MarkNode 内置 Git 支持,让你无需离开编辑器即可跟踪更改、提交并与远程仓库同步。

自动检测仓库

当你以项目方式打开一个文件夹时,MarkNode 会检查其中是否包含 Git 仓库。如果找到,Git 功能会自动启用——无需任何配置。如果该文件夹不是 Git 仓库,Git 功能将保持隐藏。

状态栏

窗口底部的状态栏一目了然地显示当前的 Git 上下文:

  • 分支名称 —— 当前检出的分支
  • 更改数量 —— 已修改、新增或删除的文件数量。此数字可点击:点击即可打开源代码管理面板。

分支指示器会实时更新。如果你从终端或其他工具切换分支,状态栏无需重新加载即可反映变化。若需查看领先/落后提交数以及执行各项 Git 操作,请使用下文介绍的源代码管理面板。

源代码管理面板

所有 Git 操作都集中在源代码管理面板中——这是一个侧边栏视图,沿用了 VS Code 等编辑器中常见的源代码管理模式。你可以通过导航栏中的源代码管理图标打开它(该图标位于最近文件之后,仅在项目为 Git 仓库时显示),或在 macOS 上按 Cmd+Shift+K、在 Windows 和 Linux 上按 Ctrl+Shift+K

该面板将所有功能集中于一处,不会用模态对话框遮挡你的编辑器:

  • 标题栏 —— 当前分支名称以及相对于远程仓库的领先/落后提交数
  • 已更改文件 —— 分为暂存的更改更改(未暂存)两组,每一项显示文件名、路径和状态字母
  • 内联操作 —— 将鼠标悬停在文件上即可暂存或取消暂存;更改标题栏提供全部暂存操作,暂存的更改标题栏提供全部取消暂存操作
  • 提交区域 —— 一个消息输入框和一个提交按钮,在你暂存了文件并填写消息后即可使用
  • 工具栏 —— 拉取推送刷新操作

文件状态标识

文件浏览器会为每个文件名着色,以标示其 Git 状态:

状态含义
已修改文件有尚未提交的更改
已新增已暂存的新文件
未跟踪尚未暂存的新文件
已删除已被移除的受跟踪文件
已重命名已被移动或重命名的受跟踪文件
冲突文件存在待解决的合并冲突

状态会沿文件夹树向上传递——如果某个文件夹内有任何文件发生更改,其父文件夹的名称也会被着色(采用优先级最高的状态)。这样你无需展开每个目录,就能发现项目中发生变化的区域。

提交更改

提交操作直接在源代码管理面板中内联完成——没有单独的对话框:

  1. 将鼠标悬停在要包含的文件上并点击暂存操作,或使用分组标题栏中的全部暂存
  2. 在消息框中填写提交消息。
  3. 点击提交

MarkNode 会针对你的本地仓库执行提交,清空消息框,并更新文件列表和状态栏中的更改数量。如果提交失败——例如被 pre-commit 钩子拒绝——面板会显示错误信息并保留你的提交消息,以便你重试。

拉取与推送

推送拉取操作位于源代码管理面板的工具栏中。

  • 拉取会从远程仓库获取最新提交,并将其合并到你当前的分支
  • 推送会将你的本地提交发送到远程仓库

如果推送被拒绝(例如远程仓库存在你本地没有的提交),你需要先拉取并解决所有冲突,然后再次推送。

在 MarkNode 之外更改的文件

如果你从终端或其他编辑器修改文件,MarkNode 会检测到这些更改并自动重新加载受影响的文件。你无需手动刷新编辑器或文件浏览器。

这同样适用于 Git 操作——执行 git checkoutgit merge 或任何修改工作树文件的命令,都会立即在编辑器中反映出来。