从现有的Git存储库中进行稀疏签出?

时间:2018-09-27 07:54:44

标签: git cygwin

我已将GIT存储库克隆到~/myrepo.git中。
存储库包含数百个目录。

我想创建几个仅包含可用目录的一小部分的“项目”,例如:

~/project1/dirA
          /dirB
          /dirC

~/project2/dirD
          /dirE
          /dirF

我需要执行什么Git命令才能使其正常工作?

我知道我需要做一些配置:
git config core.sparseCheckout true

然后我需要修改sparse-checkout文件:

echo "/dirA" >> .git/info/sparse-checkout
echo "/dirB" >> .git/info/sparse-checkout
echo "/dirC" >> .git/info/sparse-checkout

接下来会发生什么? git checkout mastergit pull? 是否缺少任何步骤?

我正在使用cygwin命令行Git,并且想做一个bash脚本来自动创建这种项目。

1 个答案:

答案 0 :(得分:2)

我认为您误认为了稀疏签出的工作方式:您一定不要先克隆远程,因为它将从远程下载所有内容。相反,您必须:

  1. 使用git init创建本地存储库,
  2. 然后编辑.git/info/sparse-checkout文件以选择子目录
  3. 添加远程git remote add origin ...
  4. 从原点拉起

请注意,如果要创建仅包含目录子集的新git repo,则要查找的命令为git filter-branch --subdirectory-filter