因此,假设我有两个具有特定模块(或子目录)的存储库,如下所示:
repo2
所以在我的测试服务器上,我加载这些存储库就像它一样,没关系,因为我得到了所有的代码。但是在客户端服务器上,假设我只需要他的项目模块,比如说是repo1
,而且还需要来自之前项目repo1
的一个模块。
有没有办法可以从module1
仅repo1
克隆,然后如果我要更新module1
中pull
中更改的任何内容,那么我会{ {1}} repo1
(只有部分repo克隆),它会更新吗?
更新 所以在客户端服务器上会有两个这样的存储库:
repo1/
/module1
repo2/
/module4
/module5
答案 0 :(得分:4)
您可以制作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相同)
答案 1 :(得分:1)
为便于记录,我将在需要存储库的根文件夹中的所有文件和两个子目录而不是其他两个(很大)目录的情况下添加我的难题。这也是我在看了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