如何递归删除Git工作区追踪文件,仅保留未追踪文件?
解决方案:删除Git追踪文件,保留未追踪文件
核心命令(删除所有追踪文件)
要删除Git工作区中所有被追踪的文件、保留未追踪文件,可使用以下命令:
安全版本(适配含空格/特殊字符的文件名)
git ls-files -z | xargs -0 rm -f
基础版本(文件名无特殊字符时适用)
git ls-files | xargs rm -f
git ls-files 会列出所有被Git追踪的文件路径,xargs rm -f 则逐个删除这些文件。执行前建议先单独运行git ls-files,确认待删除文件列表符合预期。
空目录的处理说明
上述命令不会自动删除操作后变为空的目录。因为Git本身不直接追踪目录(仅通过目录下的文件关联识别目录),删除追踪文件后,原本承载这些文件的目录会变成空目录但保留下来。
如果需要同时清理这些空目录,可额外执行:
find . -type d -empty -delete
该命令会递归扫描当前目录下的所有空目录并删除,注意它会清除所有空目录,包括原本就为空的未追踪目录。
操作逻辑匹配需求
未追踪的文件(包括新创建文件、.gitignore排除的文件)会被完整保留,完全满足你用于数据传输的需求——目标位置只需克隆对应Git仓库,即可恢复所有被删除的追踪文件。
内容的提问来源于stack exchange,提问作者chris_f
相关产品推荐
相关产品推荐

