git ls-files默认列出索引中的已跟踪路径,不是实时扫描目录的替代品。文件从工作区删除、但删除尚未暂存时,它仍可能出现在结果里;因此不能把这份清单直接当作当前磁盘文件列表。

用三份临时文件看清区别
练习仓库先跟踪tracked.txt,再创建未跟踪的loose.txt和被.gitignore排除的cache.tmp。默认ls-files可以看到已跟踪文件;加--others --exclude-standard可列出未跟踪且未被标准忽略规则排除的文件。
git ls-files
git ls-files --others --exclude-standard
git ls-files --deleted
删除以后,先看是否已经更新索引
本站在临时仓库删除tracked.txt后,默认命令仍列出它,--deleted也将它标为未暂存删除。将删除暂存后,该路径才从默认索引清单中消失。这个对照说明索引状态与目录存在性是两项不同信息,并非Git“缓存没刷新”。
| 情况 | 默认ls-files的含义 |
|---|---|
| 已跟踪且工作区存在 | 索引中有路径,磁盘也有文件 |
| 已跟踪但未暂存删除 | 索引仍有路径,磁盘可能没有 |
| 未跟踪文件 | 不会仅因磁盘存在而默认列出 |
| 删除已经暂存 | 索引中的对应条目被移除 |
给脚本用清单时,还要处理文件名
文件名可能有空格甚至换行。机器处理时可使用-z输出NUL分隔记录,再由能正确解析NUL的程序接收;不要把普通按行显示当成适用于所有文件名的协议。若任务确实要读取磁盘内容,也应逐项处理路径不存在的情况。
先明确要回答的是哪类问题
想看准备提交的内容,查看索引;想清点目录里的文件,使用适当的文件系统遍历;想找未跟踪资料,核对--others及忽略规则。本文命令均为只读,验证中的删除只发生在自动清理的临时仓库,没有操作用户项目。
资料来源与继续学习
资料查阅日期:2026年10月15日。示例、阅读练习与操作建议由本站整理。
资料查阅与编辑日期:2026年10月15日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







