This is an old revision of the document!
Git (http://git-scm.com/) is a distributed version control system. It keeps a complete repository next to each working copy, thus one can commit or inspect the project history locally.
Warning: Unlike most other version control systems (e.g., Subversion) a commit is not understood as a difference between two revisions but as the content of its revision.
In fact, Git stores the commit under the SHA-1 hash of all files in the project – also files that were not changed in this commit.
Thus, the same change of one sub-module committed to two Git branches that differ only in another sub-module results in two different SHA-1 hashes and two different commits.
It is possible to work around this by cherry-pick
ing but that will lead to extra headache.
Better practice is to have only one feature per branch.
alex @ ieg: home about me publications research