timeline面板显示“no entries”是因为vscode未获取到数据源,它仅依赖git log和fs.stat().mtime两种输入:项目需有.git文件夹、必须用open folder打开、文件须git add且已保存,vscode版本不低于1.65并启用git.timeline.enabled。

Timeline 面板为什么显示 “no entries”?
不是功能坏了,是 VSCode 根本没拿到数据源。Timeline 只消费两种输入:git log 和 fs.stat().mtime,缺一不可。
常见卡点:
- 项目根目录没有
.git文件夹,或 VSCode 打开的是单个文件(File → Open File),必须用File → Open Folder - 文件是新建的,
git status显示为untracked,没执行过git add - 改完内容但没按
Ctrl+S,未保存的编辑不会触发 Timeline 条目 - VSCode 版本低于
1.65(git.timeline.enabled未启用),1.84+才默认开启
如何让 Timeline 显示 Git 提交而非仅“已保存”?
Timeline 默认混合显示 Git + 文件系统事件,但 Git 条目需手动激活数据源。
确认前提满足后,在资源管理器右键文件 → Timeline: Show Timeline,面板顶部会出现 Git 和 File System 两个标签 —— 点击 Git 即可切换。
区分 Git 条目和本地快照:
- Git 条目带 commit hash(如
abc1234),hover 提示含 author、message - 文件系统条目只有“已保存”“已恢复”,无哈希;右键 →
Copy Source复制的是绝对路径,不是git:sha:path/to/file - 若只看到文件系统条目,检查设置中
git.timeline.enabled是否为true
点击 Git 时间线后看不到 diff 怎么办?
Timeline 里点 Git 条目,默认不自动展开差异,且 diff 渲染依赖路径和 Git 状态。
常见原因和应对:
- 当前文件路径与仓库根不一致(比如在子目录打开 VSCode,但
.git在父目录)→ 关闭 VSCode,重新用Open Folder打开仓库根 - 文件未被 Git 跟踪(
git status中为untracked或ignored)→ 先git add,再保存 - 该提交中文件是二进制、或被
.gitattributes忽略 → 终端执行git show abc1234:path/to/file验证是否可读 - 换行符配置异常(如
core.autocrlf=true)→ 临时把files.eol设为\n再试
Timeline 的 Git 条目到底覆盖哪些提交?
它只显示当前分支 HEAD 可达的提交,不包含 stash、reflog、已合并但不在当前历史中的分支记录。
容易被忽略的边界情况:
- 某次修改“不见了”,大概率是它发生在未 push 的本地分支,或已被
reset/rebase移除 - 跨分支的提交,除非你已
git fetch并 merge/rebase 进当前分支,否则不会出现在 Timeline 中 - Local History 快照(文件系统条目)只对
git add后未git commit的文件生效;一旦 commit,后续保存不再生成新快照











