Git repository within Git repository
Solution 1
You'll want to read about Git submodules.
Solution 2
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 dependencies -
git 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.
UPDATE February 2020: Nowadays I like subrepo even more.
Solution 3
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!
Buuuh
Updated on July 09, 2022Comments
-
Buuuh almost 2 years
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.
-
Paul Rougieux about 8 yearsA blog post explains the pros ans cons of each approach Git Submodule: Git Subtree.
-
-
chharvey almost 10 yearsI just tried nesting a child repo within a parent repo. when I added a file to child repo, I did
cd ../
andgit status
and the parent repo did not ignore the new file. -
somenxavier over 2 yearsDo you need put
ChildRepo
in.gitignore
?