对现有Git存储库进行稀疏签出?

对现有Git存储库进行稀疏签出?,git,cygwin,Git,Cygwin,我已将GIT存储库克隆到~/myrepo.GIT 存储库包含数百个目录 我想创建几个“项目”,它们只包含可用目录的一小部分,如下所示: ~/project1/dirA /dirB /dirC ~/project2/dirD /dirE /dirF 为了使它正常工作,我需要执行哪些Git命令 我知道我需要做一些配置: git config core.sparseCheckout true 然后我需要修改稀疏签出文件

我已将GIT存储库克隆到
~/myrepo.GIT

存储库包含数百个目录

我想创建几个“项目”,它们只包含可用目录的一小部分,如下所示:

~/project1/dirA
          /dirB
          /dirC

~/project2/dirD
          /dirE
          /dirF
为了使它正常工作,我需要执行哪些Git命令

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

然后我需要修改
稀疏签出
文件:

echo "/dirA" >> .git/info/sparse-checkout
echo "/dirB" >> .git/info/sparse-checkout
echo "/dirC" >> .git/info/sparse-checkout
接下来是什么?
git签出主机
git pull
? 是否缺少任何步骤


我使用的是
cygwin
命令行Git,我想做一个bash脚本来自动创建这种项目

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

  • 使用git init创建本地回购
  • 然后编辑
    .git/info/sparse checkout
    文件以选择子目录
  • 添加远程
    git远程添加源…
  • 从原点拉

  • 请注意,如果您想创建一个只包含目录子集的新git repo,您要查找的命令是
    git filter branch--subdirectory filter

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

  • 使用git init创建本地回购
  • 然后编辑
    .git/info/sparse checkout
    文件以选择子目录
  • 添加远程
    git远程添加源…
  • 从原点拉

  • 请注意,如果您想创建一个只包含目录子集的新git repo,您要查找的命令是
    git filter branch--subdirectory filter

    请注意,您可以使用
    git clone--no checkout
    ,使用现有克隆作为
    origin
    或使用上游URL作为
    origin
    ,但使用
    --reference
    指向现有克隆,以避免在本地复制包文件。将
    git init
    git remote add
    替换为
    git clone--no checkout
    。这使您有机会在运行
    git checkout
    步骤之前编辑
    .git/info/sparse checkout
    。请注意,您可以使用
    git clone--no checkout
    执行此操作,使用现有克隆作为
    origin
    或使用上游URL作为
    origin
    ,但使用
    --reference
    指向现有克隆,以避免在本地复制包文件。将
    git init
    git remote add
    替换为
    git clone--no checkout
    。这使您有机会在运行
    git checkout
    步骤之前编辑
    .git/info/sparse checkout