Git - 仅克隆存储库的一部分并仅获取该部分的拉取?

Git - clone only part of the repository and get pulls only for that part?

假设我有两个包含特定模块(或子目录)的存储库,如下所示:

repo1/
  /module1
  /module2
  /module3


repo2/
  /module4
  /module5

所以在我的测试服务器上,我按原样加载了这些存储库并且没问题,因为我得到了所有代码。但是在客户端服务器上,假设我只需要他的项目模块,比如说 repo2,还有一个来自以前项目的模块,即 repo1

有没有一种方法可以让我仅从 repo1 克隆 module1,然后如果我要更新 repo1 中在 module1 中更改的任何内容,那么我会为 repo1pull(这只会克隆部分回购协议),它会更新它吗?

更新 所以在客户端服务器上会有两个像这样的回购:

repo1/
  /module1

repo2/
  /module4
  /module5

你可以做一个sparse checkout for each repos:

mkdir repo1
cd myrepo1
git init
git config core.sparseCheckout true
git remote add -f origin /url/of/repo1
echo module1/*> .git/info/sparse-checkout
git fetch
git checkout master

(repo2 相同)

作为记录,我将添加我的困境,我想要存储库的根文件夹中的所有文件和两个子目录,而不是其他两个(非常大的)目录。这是我在查看 here

之后想出的
git init SOME_REPO
cd SOME_REPO/
git remote add origin ssh://<git server>:<port>/SOME_REPO
git config core.sparsecheckout true
echo '/*' >> .git/info/sparse-checkout
echo '!first_not_wanted_dir/*' >> .git/info/sparse-checkout
echo '!second_not_wanted_dir/*' >> .git/info/sparse-checkout
git pull --depth=1 origin master