Git Submodule
$ git submodule — List your submodules, a - before the hash indicates the submodule is not initialized
$ git submodule add <git repository> <target directory> — Let your project know about the submodule and where it will go
$ git submodule init <target directory> — Initialize the submodule (this will add an entry to your .git/config file)
$ git submodule update <target directory> — Pull in the contents of the submodule. This command is destructive.
The trick here is that a Git Submodule only tracks the revision from when it was added, not the latest version of whatever that submodule contains. To update a submodule:
$ cd <target directory>
$ git checkout HEAD — The can be any revision, not necessarily HEAD.
$ git add <target directory>
$ git commit -m "UPDATED: Submodule..."