如何仅从 git 子模块克隆文件夹?

问题描述 投票:0回答:4

我正在尝试从外部 github 存储库获取一个文件夹以在我的项目中使用。

我希望我的项目设置是这样的:

-my_project
    -submodule
        -code.py
    -MY_README
    -.git

我有一个名为 some-submodule 的远程存储库,其结构如下:

-submodule
    -code.py
-README
-.gitignore

所以我只想将子模块文件夹添加到我的项目中。

但是在

git submodule add http://github.com/user/submodule.git submodule

之后我最终得到了这个
-my_project
    -submodule
        -submodule
            -code.py
        -README
        -.gitignore
    -MY_README
    -.gitignore

我是 git 新手,所以我真的不知道是否可以只使用 git。如果有帮助的话,我正在 Windows 上使用 msysgit。

那么,我是否可以从公共存储库中获得项目中干净的子模块文件夹?

如果您对我想要做什么感到好奇,我会尝试直接从他们的存储库中获取这些 django 插件 1 2 将它们添加到我的项目中。

git git-submodules
4个回答
68
投票

您想要做的事情是不可行的,因为您无法克隆存储库的一部分。

查看重复的详细信息如何更改 git 子模块以指向子文件夹?


9
投票

如果你:

git submodule add http://github.com/user/submodule.git

直接在

my_project
下,您最终应该得到所需的目录组织。

来自

git submodule add
手册页

可选参数

<path>
是克隆子模块在超级项目中存在的相对位置。
如果未给出
<path>
,则使用源存储库的“人性化”部分(“repo”表示“
/path/to/repo.git
”,“
foo
”表示“
host.xz:foo/.git
”)。


0
投票

现在可以通过稀疏结帐和符号链接实现这一点。有关其工作原理的更多详细信息,请查看此要点

https://gist.github.com/ZhuoyunZhong/2c08c8549616e03b7f508fea64130558


-6
投票

只是

git submodule update --init --recursive

在项目的根目录中,它应该做你想做的事情

© www.soinside.com 2019 - 2024. All rights reserved.