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
中更改的任何内容,那么我会为 repo1
做 pull
(这只会克隆部分回购协议),它会更新它吗?
更新
所以在客户端服务器上会有两个像这样的回购:
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
假设我有两个包含特定模块(或子目录)的存储库,如下所示:
repo1/
/module1
/module2
/module3
repo2/
/module4
/module5
所以在我的测试服务器上,我按原样加载了这些存储库并且没问题,因为我得到了所有代码。但是在客户端服务器上,假设我只需要他的项目模块,比如说 repo2
,还有一个来自以前项目的模块,即 repo1
。
有没有一种方法可以让我仅从 repo1
克隆 module1
,然后如果我要更新 repo1
中在 module1
中更改的任何内容,那么我会为 repo1
做 pull
(这只会克隆部分回购协议),它会更新它吗?
更新 所以在客户端服务器上会有两个像这样的回购:
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