问题
In svn you can link a repository to any folder in another svn repository. I'm wondering if there is a similar feature for git? Basically I want a git submodule inside my repository, but I want the submodule to be a pointer to a subfolder of another git repository, not the whole repository. Is this possible?
回答1:
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.
回答2:
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:
- Set up your submodule in a separate directory.
git submodule add http://example.com/repo.git ./submodules/repo
- 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/
回答3:
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.
来源:https://stackoverflow.com/questions/1121227/git-submodule-to-a-subfolder