如何配置Git sparse-checkout排除指定顶层目录(Git≥2.37.3/Windows Server 2016)
问题:Git sparse-checkout 配置:检出全仓库但排除指定顶层目录
需求:在Git版本≥2.37.3的Windows Server 2016环境下,从git clone <url> --no-checkout创建的无工作目录克隆开始,配置sparse-checkout,实现检出整个仓库但排除名为Tests_NR的顶层目录。
此前失败的尝试
曾创建ignore.txt文件,内容如下:
/* !/Tests_NR/
然后执行以下命令:
git sparse-checkout init type ignore.txt | git sparse-checkout set --stdin git sparse-checkout list # 输出: # !/Tests_NR # * git checkout master
结果未生效,工作目录仅包含顶层文件,无任何目录。
有效解决方案(更新)
在Windows PowerShell中执行以下命令可实现需求:
git sparse-checkout init git sparse-checkout set '/*' '!/Tests_NR/' git sparse-checkout list # 输出: # /* # !/Tests_NR/
执行上述命令后,再运行git checkout master,即可获取除Tests_NR外的所有仓库内容。
注意事项
- 在常规Windows CMD中执行相同命令会失败,执行后
git sparse-checkout list的输出会包含引号,导致配置不生效:
git sparse-checkout init git sparse-checkout set '/*' '!/Tests_NR/' git sparse-checkout list # 输出: # '/*' # '!/Tests_NR/'
内容的提问来源于stack exchange,提问作者Scrontch
相关产品推荐
相关产品推荐

