单仓库里目录很多,但手头只改其中一块时,可以试试 Git 自带的 sparse-checkout,减少工作区里无关文件。环境:Git 2.25+。
git clone --filter=blob:none --no-checkout <repo-url> project
cd project
git sparse-checkout init --cone
git sparse-checkout set services/api shared
git checkout main
这样工作区只展开 services/api 和 shared。后面要加目录,继续执行:
git sparse-checkout add services/web
它主要控制工作区内容,不等于权限隔离;需要完整历史时也还是会保留提交记录。老项目如果目录结构复杂,先看一下 Git 版本和 sparse-checkout 的模式差异,避免脚本在不同环境里表现不一致。