How to clone only a folder from a git submodule?

GitGit Submodules

Git Problem Overview


I'm trying to get just a folder from an external github repo to use in my project.

I want my project setup to be like this:

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

And I have the remote repo named some-submodule with following structure:

-submodule
    -code.py
-README
-.gitignore

So I just want the submodule folder added to my project.

But I end up with this after

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

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

I am new to git so I really don't know if it possible using just git. If it is of some help I'm using msysgit on windows.

So, is there anyway that I can get a clean submodule folder in my project from a public repo?

If you're curious of exactly what I'm trying to do I'm trying to take directly from their repos these django plugins 1 2 to add them to my project.

Git Solutions


Solution 1 - Git

What you want to do is not feasible because you cannot clone a part of a repository.

See details in duplicate https://stackoverflow.com/questions/5303496/how-to-change-a-git-submodule-to-point-to-a-subfolder

Solution 2 - Git

If you:

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

directly under my_project, you should end up with the desired organization of directories.

From git submodule add man page:

> The optional argument <path> is the relative location for the cloned submodule to exist in the superproject.
If <path> is not given, the "humanish" part of the source repository is used ("repo" for "/path/to/repo.git" and "foo" for "host.xz:foo/.git").

Solution 3 - Git

just

git submodule update --init --recursive

in the root-directory of your project and it should do what you want

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondemulaView Question on Stackoverflow
Solution 1 - GitdregadView Answer on Stackoverflow
Solution 2 - GitVonCView Answer on Stackoverflow
Solution 3 - GitImmanuelView Answer on Stackoverflow