Git submodule is very useful and important when doing a huge project. However the mechanism is not clearly described in most of the online manuals:
1) Submodule Add
This will log and register certain submodule in
.gitmodules file. Registration is also triggered via
git submodule init.
2) Submodule update
Such command will checkout certain version into the registered path.
However the version is locked through
.git/modules/submodule_path_here/FETCH_HEAD during initial registration, and such update command will not fetch a new version, this command has similar effect as
git checkout $certain_version.
3) Update version
We can either do:
Both will update the version in
FETCH_HEAD to the latest, and fetch the versions respectively. Such operation requires commit to update the repo.
4) Edits under submodules folder
Git will search for the nearest git repo - so whenever there’s a commit it will commit to submodule, very nice.
– Update Oct. 12, 2015 –
5) Tracking submodules branches
Accordint to this Stack Overflow post, the easiest way to implement submodule is to specify branch during submodule add:
And to fix whatever matter, please refer this post: [http://stackoverflow.com/questions/1777854/git-submodules-specify-a-branch-tag/18799234#18799234]