Better than submodules a large majority of the time.
Follow this article to setup a subtree:
http://lostechies.com/johnteague/2014/04/04/using-git-subtrees-to-split-a-repository/
The core principles are, once the subtree code is in it's own repo, perform these actions:
git remote add SubtreeName <url_to_lib_remote>
git rm -r subtree/dir
git add -A
git commit -am "removing subtree folder and contents"
git subtree add --prefix=subtree/dir SubtreeName master
git subtree push -P subtree/dir SubtreeName master
git subtree pull -P subtree/dir SubtreeName master
Note: vim will be used to save the "merge message".
Pressescand then type:xfor save and quit.
git push SubtreeName `git subtree split -P subtree/dir master`:master --force