本地排除文件
本地排除文件
先判断目标文件是否已经纳入 Git 版本管理:
- 只想在自己电脑上忽略尚未纳入版本管理的文件,用
.git/info/exclude。 - 想让已经纳入版本管理的大目录不出现在本地工作区,用
sparse-checkout(稀疏检出)。
这两种做法解决的是不同问题,不能互相替代。
忽略个人未跟踪文件
在仓库根目录编辑 .git/info/exclude,每行写一个只对当前这份本地仓库生效的排除规则:
我的草稿/
临时笔记.md它不会修改共享 .gitignore,也不会影响其他人。已经被 Git 跟踪的文件不受这份本地排除表影响。
暂不显示已经纳入版本管理的大目录
第一次下载仓库:同时减少下载量
只使用 sparse-checkout,通常只是让文件不出现在工作区,相关文件内容仍可能已经下载。第一次下载仓库时配合 --filter=blob:none,可以暂不下载未使用的大文件内容:
git clone --filter=blob:none --no-checkout https://github.com/PKM-er/Pkmer-Math.git Math
cd Math
git sparse-checkout init --no-cone
git sparse-checkout set '/*' '!/Other/pdf参考资料/' '!/Other/数学分类/'
git checkout main已经下载过仓库:调整工作区
git sparse-checkout init --no-cone
git sparse-checkout set '/*' '!/Other/pdf参考资料/' '!/Other/数学分类/'上面的规则保留其余仓库内容,只让 Other/pdf参考资料 与 Other/数学分类 不再显示在工作区。命令会立即改变工作区中可见的文件;执行前先确认这些目录没有尚未提交的修改。
增加或删除排除项时,重新执行完整的 git sparse-checkout set ...。git sparse-checkout reapply 只重新应用现有规则,不会恢复全部文件。
恢复完整工作区:
git sparse-checkout disable即使某个路径当前不在工作区,也可以只读查看远端提交中的内容:
git show origin/main:.github/workflows/static.yml
git ls-tree -r --name-only origin/main .github/workflows链接到当前文件 3