使用Git克隆时仅选择文件夹的子集

use*_*010 10 git version-control github

有没有办法克隆git中原始分支的子集?

例如

我有以下文件夹结构:

A
| _ B
| _ C
| _ D

克隆后,我希望:

A
| _ C
| _ D

我想使用此流程来部署我的应用程序:

  • 通过仅获取部分repo并忽略不必要的开发文件来使克隆更快.
  • 出于安全原因,我不想生产一些文件.

有什么建议?

Ave*_*vec 16

从Git 1.7开始,你想要的就是所谓的稀疏结账.

这里有一个很好的解释.

  • 如今,这应该是预期的答案. (4认同)

Ada*_*ruk 1

正如评论所暗示的,您无法克隆路径的一部分。如果您习惯于不同的源代码控制范例(例如 subversion 使用的范例),那么一开始这可能看起来不直观。你不能这样做的原因是 git 存储了整个树的快照。因此,您可以获得浅克隆,这意味着您只能获得某个点的最近历史记录。这更像是水平切片或切断,而不是您想要的垂直切片。

获得你想要的东西的最好方法是使用子模块。如果您已经在一个存储库中拥有所有内容,则必须从这一范例开始,或者使用过滤器分支将存储库分成多个存储库。这也很棘手,因为您最终会在所有存储库中得到空提交,如果删除这些提交,您将需要一些棘手的后续过滤器分支来将子模块中的正确提交与父存储库联系起来。

请参阅http://git-scm.com/book有关子模块的章节

  • 这个答案已经过时了。 (7认同)