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


78

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

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

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

我有一个名为re-submodule的远程仓库,其结构如下:

-submodule
    -code.py
-README
-.gitignore

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

但是我最终还是这样

git子模块添加http://github.com/user/submodule.git子模块

-my_project
    -submodule
        -submodule
            -code.py
        -README
        -.gitignore
    -MY_README
    -.gitignore

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

所以,无论如何,我可以从公共存储库中的项目中获得一个干净的子模块文件夹吗?

如果您对我要执行的操作完全感到好奇,我想直接从他们的存储库中获取这些django插件1 2,以将其添加到我的项目中。



Answers:



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”)。


太棒了!我一直都在学习教程,但我没有阅读手册...我以为我最终会在自己的项目中得到子模块的README文件...非常感谢!
demula 2010年

1
但是有一个问题...仅当子模块的存储库与我要使用的文件夹具有相同的名称时,它才起作用,但是如果不是这样,即:repo-> django-submodule文件夹名称->子模块,它将不再起作用。让我们看看我是否找到解决方法
demula 2010年

对不起,老兄,我尝试使用结构良好的存储库之一尝试您的解决方案,我认为问题已经解决了……我的错。
demula 2010年

5

只是

git submodule update --init --recursive

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.