如何选择性地克隆Git仓库

8

我是Git的新手。我想克隆一个大型的远程代码库,比如说xyzcodebase。仓库的结构如下所示,对应不同的功能区域。

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

我从事功能区2的工作,因此在克隆时我不想获取来自功能区1(大型)的代码,这将节省很多时间。因此,在克隆后,我只会在本地仓库中拥有功能区2的源代码。

是否有一种方法可以实现这种选择性地克隆git存储库呢?

提前感谢您的帮助。


请查看此线程:https://dev59.com/QHRB5IYBdhLWcg3wgXhV - DoronG
3个回答

7

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

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


谢谢您的回复。如果不是克隆,是否有可能在空的Git存储库中仅获取一个目录? - Vaman Kulkarni
@Venam 还没有,但你不需要。一旦你拥有整个代码库,获取其中一个区域或另一个区域将是相对较小的操作。 - user229044
@Vaman 恐怕不是这样的,clone 只是一种花哨的方式来说 git init, git remote add, git fetch,所以你仍然需要等待整个存储库的传输。您可以获取存储库的浅层副本(--depth 参数),但是如果没有完整的历史记录,您将无法提交和推送到远程,因此它仅适用于部署或代码审查,而不适用于开发(除非您将更改作为补丁发送给具有完整存储库的人)。 - MBO
@meagar 你说得对,我忘了在 Git 中只需要一次获取整个存储库,然后只获取压缩格式的更改。 - MBO

0

这是一个不太正规的解决方案,可能在特殊情况下有助于解决您的问题。特别是如果您只对单个文件感兴趣,您可以通过控制台(在Unix中)使用wget下载它: wget https://raw.githubusercontent.com/GITHUBUSER/REPOSITORY/master/file.ending

您可以通过在github中导航到该文件并单击“原始”来获取特定文件的链接。


0

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