| Submodule mode | exact | branch | floating |
| Description | The SHA-1 recorded for the superproject is checked out as a detached HEAD | A local branch is used to integrate both local and upstream changes, still a SHA-1 is recorded to denote the exact submodule commit used | A local branch follows a remote branch, the SHA-1 only serves as an initial starting point and may be updated to record releases or other special occasions, but doesn't have to |
| Typical use case | Content shared between different repos | Content shared between different repos | Content managed by somebody else |
| Submodule mode | exact | branch | floating |
| Description | The SHA-1 recorded for the superproject is checked out as a detached HEAD | A local branch is used to integrate both local and upstream changes, still a SHA-1 is recorded to denote the exact submodule commit used | A local branch follows a remote branch, the SHA-1 only serves as an initial starting point and may be updated to record releases or other special occasions, but doesn't have to |
| Typical use case | Content shared between different repos | Content shared between different repos | Content managed by somebody else |