背景
GitKraken commit 右键有 "Compare commit against working directory";另外常见需求是选两个 commit 对比。
方案
- commit 右键加 "Compare against working directory":
git diff <sha> 输出多文件 diff → 中间面板列出文件清单(复用 CommitDetailView 的文件列表样式),点文件看单文件 diff(git diff <sha> -- path)
- commit vs commit:graph 里 Cmd+点第二个 commit 时(List 多选已支持 selection Set 改造)右键出现 "Compare A...B":文件清单 =
git diff --name-status A B,单文件 = git diff A B -- path
- 数据结构:新增 CompareState { base: String, target: String?(nil=工作区), files: [FileChange] },UI 复用 FileDiffView(diffCommit 语义扩展为 diffRange)
- 注意 selection 从 String? 改 Set 的连带改动(selectedCommit 相关逻辑、详情面板取 last selected)
验收
- 单 commit vs 工作区、任意两 commit 的文件清单与 diff 正确
- 与现有 commit 详情/diff overlay 不打架(互相切换状态清晰)
背景
GitKraken commit 右键有 "Compare commit against working directory";另外常见需求是选两个 commit 对比。
方案
git diff <sha>输出多文件 diff → 中间面板列出文件清单(复用 CommitDetailView 的文件列表样式),点文件看单文件 diff(git diff <sha> -- path)git diff --name-status A B,单文件 =git diff A B -- path验收