Skip to content

Diff and Graph

zhangxh edited this page Aug 16, 2026 · 1 revision

Diff 与提交图

工作区 Diff

点击“查看 Diff”后,选择框会把同一文件的两个阶段分开:

  • 已暂存 · 将进入下一次提交:比较 HEAD 与暂存区;
  • 待提交 · 尚未暂存:比较暂存区与当前工作区。

这一区分非常重要。假设一个文件先暂存了修复 A,随后又继续修改 B:

HEAD → 暂存区:修复 A
暂存区 → 工作区:修改 B

下一次提交只包含 A,除非再次暂存该文件。

未跟踪、删除和二进制文件

  • 未跟踪文件没有旧版本,TriForge 直接打开当前内容;
  • 删除文件会显示删除补丁;
  • 二进制文件没有可读文本补丁时会给出说明;
  • 重命名会启用 Git 的重命名检测;
  • Diff 默认带上下文行,且不运行外部 diff/textconv。

每个文件行的 Diff 图标可以直接打开该阶段的差异,不必先经过总选择框。

提交 Diff

完整 Graph 中选择一个提交后,可查看:

  • 提交详情;
  • 这个提交引入的补丁;
  • 根提交的完整新增内容;
  • Merge commit 的提交信息与父节点关系。

“提交 Diff”与“当前工作区 Diff”不同:前者查看历史节点已经记录的改动,后者查看尚未提交的状态。

侧栏提交图

侧栏紧凑图适合快速判断:

  • 当前 HEAD;
  • 分支与合并线;
  • 最近提交标题、作者和时间;
  • 本地分支、Tag 与远程分支标签;
  • 三个平台各自远程位置。

点击提交行会打开完整 Graph 并选中同一提交。

完整 Git Graph

入口:

  • 视图标题的分支图标;
  • “提交与同步”中的“打开 Graph”;
  • 点击侧栏提交;
  • 命令面板运行“TriForge Git: 打开 Git Graph”。

完整 Graph 一次最多加载 triforge.graph.maxCommits 个提交,默认 300,可设置 20–2000。大型仓库中未显示旧节点不代表提交丢失,只表示达到加载上限。

标签和颜色

默认语义:

  • HEAD:VS Code 焦点蓝;
  • GitHub:中性灰;
  • GitLab:橙色;
  • Gitea:绿色;
  • Tag:紫色;
  • 选中/回退高亮:跟随 VS Code 焦点色。

颜色同时适配深色、浅色和高对比度主题。不要只靠颜色判断,平台缩写和 remote 名称也会显示在标签或 tooltip 中。

平台是如何识别的

TriForge 根据:

  1. Git remote URL;
  2. 已保存连接的实例主机和路径前缀;
  3. 常见平台域名或 remote 名称;

把 remote 分类为 GitHub、GitLab、Gitea 或未知。自建实例若已建立对应连接,识别最准确。

平台标记表示本地存在的远程跟踪引用,不是实时查询服务器。因此:

  • 刚完成远端网页提交后,图不会自动知道;
  • 运行 Fetch 后才会移动;
  • remote 没有抓取过时可能显示“暂无远程引用”;
  • 删除连接不会删除已有远程跟踪引用,但平台分类可能变为未知。

回退节点高亮

点击“回退”后,第一步选择提交。使用上下键移动活动项时:

  • 侧栏提交图滚动到对应节点;
  • 节点获得焦点色高亮;
  • 目标不在普通紧凑窗口内时,会临时加载显示;
  • 取消或完成后清除高亮。

高亮本身不会执行 Git 命令,只有第二步确认 Revert 或 Reset 后才修改仓库。

Graph 与真实远程的关系

Graph 可以告诉你“本地最后一次 Fetch 认为远程在哪里”,但不能单独证明:

  • Token 仍有效;
  • Push 一定有权限;
  • 远端此刻没有新提交;
  • LFS 对象完整;
  • 服务端分支保护允许写入。

Push 前仍应 Fetch,重要发布还应在平台网页或 CI 中复核。

Clone this wiki locally