Git Submodule to a subfolder

Usually when you're trying to extract a subfolder of some other project, that subfolder should be a separate project in the first place, and both parent projects should be referring to it.

You can extract such a subproject's history using a tool like git subtree. Then you can link the subtree back into your project using either git submodule or git subtree, whichever you prefer.


Git does not support partial checkouts, so the submodule must point to a complete repository.

This thread on the Git mail list provides some background information.

This article from Panther Software offers some insight from someone else trying to accomplish a similar goal (i.e. replicate svn:externals using Git).

If both projects are under your control, then I suggest you isolate the "subfolder" that you interested in to its own standalone repo. Then both projects can create submodules that link to it.


I'm running into the same issue. It doesn't look solvable from a git level, at least not in a way that lets you easily pull or push to the parent repo.

However, you can work around this limitation by using a simple symlink:

  1. Set up your submodule in a separate directory.
    • git submodule add http://example.com/repo.git ./submodules/repo
  2. Create a symlink to the subfolder in the place you want:
    • ln -s ./submodules/repo/subdirectory ./wherever/symlinked_directory

References:

  • http://git-scm.com/book/en/Git-Tools-Submodules
  • http://www.cyberciti.biz/faq/unix-creating-symbolic-link-ln-command/