简体   繁体   中英

Git Submodule to a subfolder

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?

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 (ie 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:

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM