2010-10-05 52 views
49

我正试图从外部github回购文件夹中获取文件夹以便在我的项目中使用。如何从git子模块克隆一个文件夹?

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

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

和我有远程回购命名一些,子模块具有以下结构:

-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后,所以我真的如果只使用混帐有可能不知道。如果它有一些帮助,我在Windows上使用msysgit。

那么,无论如何,我可以从公共回购项目中获得一个干净的子模块文件夹吗?

如果你好奇我正在尝试做什么,我试图直接从他们的回购这些Django插件12将它们添加到我的项目。

+1

完全重复的细节[如何从一个混帐回购的git的子模块中添加特定的文件夹?](http://stackoverflow.com/questions/3158597/how-can- i-add-a-git-repo-as-a-git-submodule) – 2014-03-25 08:57:45

回答

15

你想做的事是不可行的,因为你不能克隆一部分存储库。

见的重复How to change a git submodule to point to a subfolder?

+1

严格地说,_cloning_仅仅是一个版本库的一部分是不可能的,但是从Git 1.7开始就有**稀疏检查**来解决OP可能需要的东西。请参阅https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository – Peterino 2017-10-31 17:05:20

5

如果您:

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

直属my_project,你应该使用目录的所需组织告终。

git submodule add man page

可选参数<path>是用于克隆的子模块在上层项目存在的相对位置。
如果没有给出<path>,则使用源储存库的“人性化”部分(“/path/to/repo.git”的“回购”和“host.xz:foo/.git”的“foo”)。

+0

太棒了!我一直在跟随教程,但我没有阅读手册......我想我最终会在自己的项目中使用子模块的README文件... 非常感谢! – demula 2010-10-05 19:47:06

+1

虽然有一个问题,它只适用于如果子模块的回购与我想要使用的文件夹相同的名称,但如果不是,即:repo-> django-submodule文件夹名称 - >子模块它不工作了。让我们来看看我是否找到了一些解决方法 – demula 2010-10-05 21:34:28

+0

对不起,我试着用一个结构合理的回购协议来解决您的问题,我认为问题已经解决了......我的不好。 – demula 2010-10-05 21:58:33