Skip to content

任意比较:commit vs 工作区 / commit vs commit #7

Description

@zjywill

背景

GitKraken commit 右键有 "Compare commit against working directory";另外常见需求是选两个 commit 对比。

方案

  1. commit 右键加 "Compare against working directory":git diff <sha> 输出多文件 diff → 中间面板列出文件清单(复用 CommitDetailView 的文件列表样式),点文件看单文件 diff(git diff <sha> -- path
  2. commit vs commit:graph 里 Cmd+点第二个 commit 时(List 多选已支持 selection Set 改造)右键出现 "Compare A...B":文件清单 = git diff --name-status A B,单文件 = git diff A B -- path
  3. 数据结构:新增 CompareState { base: String, target: String?(nil=工作区), files: [FileChange] },UI 复用 FileDiffView(diffCommit 语义扩展为 diffRange)
  4. 注意 selection 从 String? 改 Set 的连带改动(selectedCommit 相关逻辑、详情面板取 last selected)

验收

  • 单 commit vs 工作区、任意两 commit 的文件清单与 diff 正确
  • 与现有 commit 详情/diff overlay 不打架(互相切换状态清晰)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions