Just for completeness:
There is another solution, I would recommend: subtree merging.
In contrast to submodules, it's easier to maintain.
You would create each repository the normal way.
While in your main repository, you want to merge the master (or any other branch) of another repository in a directory of your main directory.
$ git remote add -f ThirdPartyGitRepo /project_root/
$ git merge -s ours --no-commit ThirdPartyGitRepo/master
$ git read-tree --prefix=third_party_git_repository_used_by_my_project/ -u ThirdPartyGitRepo/master
$ git commit -m "Merge ThirdPartyGitRepo project as our subdirectory"`
Then, in order to pull the other repository into your directory (to update it), use the subtree merge strategy:
$ git pull -s subtree ThirdPartyGitRepo master
I'm using this method for years now, it works :-)
More about this way including comparing it with sub modules may be found in this git howto doc.