如何仅克隆Git存储库的子目录?

2001

我有一个Git仓库,根目录下有两个子目录:

/finisht
/static

当这个项目在SVN上时,/finisht被检出到一个地方,而/static则被检出到另一个地方,如下所示:

svn co svn+ssh://admin@domain.example/home/admin/repos/finisht/static static

有没有使用Git的方法可以实现这个?


18
可能是 Checkout subdirectories in Git? 的重复问题。 - Joachim Breitner
2
对于一个2014年的用户,git clone最简单的命令是什么?我使用了这个简单的答案。如果有更简单的方法,请评论。 - Peter Krauss
1
对于那些尝试克隆存储库内容(而不是创建根文件夹)的人来说,这是一个非常简单的解决方案:https://dev59.com/zG025IYBdhLWcg3wFxua - Marc
2
@NickSergeant:自Git 2.19发布三周以来,这终于成为可能,可以在此答案中看到:https://dev59.com/QHRB5IYBdhLWcg3wgXhV#52269934 考虑现在接受它。注意:在Git 2.19中,仅实现了客户端支持,服务器端支持仍然缺失,因此仅在克隆本地存储库时才起作用。还要注意,大型Git主机(例如GitHub)实际上不使用Git服务器,而是使用自己的实现,因此即使支持出现在Git服务器上,也不意味着它会自动在Git主机上工作。(另一方面,他们可以更快地实现它。) - Jörg W Mittag
4
如果你想从 GitHub 存储库下载一个文件夹,https://download-directory.github.io/ 可能是个好选择。 - jemand771
显示剩余6条评论
31个回答

-1

我尝试了这个帖子中的所有方法,但都没有成功...结果发现,在Git 2.24版本(在此答案发布时与cpanel一起提供的版本)中,您不需要这样做。

echo "wpm/*" >> .git/info/sparse-checkout

你所需要的只是文件夹名称

wpm/*

简而言之,你要这样做

git config core.sparsecheckout true

你可以在编辑 .git/info/sparse-checkout 文件时,将文件夹名称(每行一个)添加进去,并在末尾加上 /* 来获取子文件夹和文件。
wpm/*

保存并运行结账命令

git checkout master

结果是我仓库中预期的文件夹,没有其他东西 如果这对你有用,请点赞


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接