如何将git repo子目录检出到当前目录?

Gle*_*nov 12 git

有一个目录结构的远程仓库:

-directory1
    -file1_1
    -file1_2
    ...
-directory2
    -file2_1
    -file2_2
    ...
Run Code Online (Sandbox Code Playgroud)

我在网站托管上有一个文件夹,其中包含自定义名称,例如"/ path/public_html".

如何在Web托管上设置git,以便我的"public_html"跟踪远程仓库的子目录"directory2"?

所以,换句话说,我想在web主机上执行某种形式的git命令,并将public_html更新为"directory2"的最新内容.如果它有帮助,我不关心从网络托管推回回购.

Von*_*onC 11

你不能直接克隆directory2 的内容,只directory2 其内容,这意味着你总是有一个directory2/磁盘上的文件夹中.

如果你想看到directory2的内容public_html(意思不是 public_html/directory2/...),那么你需要一个符号链接.

话虽这么说,您仍然可以克隆和签出 directory2文件夹,而不是克隆完整的仓库,如"在没有先检查整个存储库的情况下是否可以进行稀疏检出? "中所述.

那是:

git init /a/path
cd /a/path
git config core.sparseCheckout true
git remote add -f origin /url/remote/repo
echo "directory2/" > .git/info/sparse-checkout
git checkout [branchname] # ex: master
Run Code Online (Sandbox Code Playgroud)

这将使一个a/path/directory2文件夹,比你public_htmlsymlink来.

如果有一个directory2文件夹public_html不打扰你,那么你可以重复上述命令,public_html而不是a/path.


sha*_*haf 6

如何在主机上克隆整个repo并在目录之间使用符号链接 public_html -> directory2