How can I add a specific folder from a git repo as a git submodule?

GitGit Submodules

Git Problem Overview


I have a git repo and I want to add a submodule to it. Problem is, the submodule exists as a folder inside another repo. Can I add only that folder as a submodule?

Git Solutions


Solution 1 - Git

I ended up doing this:

  1. Create a submodules directory.
  2. Add the submodule in this directory.
  3. Create a symlink to the specific directory inside the submodule.

This way you have default Git submodule behaviour and in your project you only use a subset of the whole submodule.

Solution 2 - Git

If you really need to include part of an other repository within the history of your own repo, then the subtree merge strategy is more adequate than submodules.

But in both case, the full repository is linked to your repo, not just one directory.
And partial cloning is not possible.

You could try and isolate that directory in its own repository, and then add it as a submodule, but that means its history will be totally seperated from the repo its was coming from originally.

Solution 3 - Git

  1. Create new branch
  2. Move required files to new branch
  3. Add sub module to super repository
  4. Checkout sub-module to new branch

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
QuestiontuxcanflyView Question on Stackoverflow
Solution 1 - GitgitaarikView Answer on Stackoverflow
Solution 2 - GitVonCView Answer on Stackoverflow
Solution 3 - GitBinaryMakerView Answer on Stackoverflow