如何有选择地克隆git存储库

时间:2011-08-18 12:33:03

标签: git clone git-clone

我是Git的新手。我想克隆一个大的远程存储库,让我们说xyzcodebase。 repo的结构就像我有不同功能区域的src文件夹,如下所示。

xyzcodebase
|
|__ Func area 1
|
|__ Func area 2

我在Functional area 2工作,因此在克隆时我不想要Functional area 1(大尺寸)的代码,这将节省我的大量时间。因此,在克隆之后,我的本地存储库中只有Functional area 2源代码。

有没有办法实现git存储库的这种选择性克隆?

提前感谢您的帮助

3 个答案:

答案 0 :(得分:7)

不,没有办法只克隆一个目录。 Git将历史记录存储为整个存储库的更改,而不是仅将子树存储为SVN。

如果您的项目包含多个功能,那么最好将其拆分为一些子项目,使用不同的存储库,然后将其他存储库作为主项目中的子模块包含在内。但这取决于你的项目是如何组织的。

答案 1 :(得分:0)

这是一个hacky解决方案,在特殊情况下可能会帮助解决您的问题。具体来说,如果您只对单个文件感兴趣,可以通过wget从控制台(在Unix中)下载它: wget https://raw.githubusercontent.com/GITHUBUSER/REPOSITORY/master/file.ending

您可以通过在github中导航到特定文件的链接,然后点击" raw"。

答案 2 :(得分:0)

最近对此提供了一些支持,但是Git服务器需要支持partial clone,以便可以将其他目录中的对象从生成的打包文件中排除。

另请参阅https://docs.gitlab.com/ee/topics/git/partial_clone.html#filter-by-file-pathgit-sparse-checkout