I have a main git repository A and we are using sources out of another git repository B in a subdirectory of our main project. Now it would be good to have the B repository checked out within the A repository in this used subdirectory. If someone else then clones the repository of course he should get our main repository A and within that automatically the B repository.
Let me visualize the directory structure:
+ main_repository - the root directory of the main Repository + src - directory containing the source + foreignRepo - this should be the root directory of another git repo + binaries + other
This must be also known in the remote repository, just a local copy doesn't help me, because other people check this out and must be able to compile all the stuff.
You'll want to read about Git submodules.
Use git subtree
in git version 1.7.11 and above. git subtree
is superior to git submodule because:
- Management of a simple workflow is easy. Older versions of git are supported (even before v1.5.2)
- The sub-project’s code is available right after the clone of the super project is done
git subtree
does not require users of your repository to learn anything new, they can ignore the fact that you are using subtree to manage dependenciesgit subtree
does not add new metadata files likegit submodule
does (such as.gitmodule
)- Contents of the subtree can be modified without having a separate repository copy of the dependency somewhere else
Additionally, if you need to detach a subtree of your existing repository into a new repository, git subtree split
can help you with that.
You can nest two git repo's without using submodules. Suppose ChildRepo is a subdirectory of ParentRepo, and both are git repositories.
+ ParentRepo
- ChildRepo
If you add a file to ChildRepo, ParentRepo will ignore it. When you commit it it will be added to ChildRepo. It is not possible to add files within ChildRepo to ParentRepo.
More info: Nested GIT repo gotchas!
来源:https://stackoverflow.com/questions/4500305/git-repository-within-git-repository