There were few internal data format changes between 1.7.11 and any of the current 2.x releases, but v1.7.11 did itself introduce a new v4 index (as in .git/index
) file format, and v2.3.0 introduced a new "split index" option. These are all upwards-compatible changes, i.e., you can use a newer Git version on any existing repository, including ones with existing index files.
If you run a newer Git that replaces an older v2 index with a newer v4 one, and then need to run the older Git version again for some reason, you can simply remove and rebuild the index (of course this drops anything staged, or any in-progress merge).
There is now the ability to change the on-disk repository format, as of Git version 2.6.3 (the existing format is now labeled "version 1") but no new format has been introduced yet.
In any case, you can always git clone
from an older Git version to a newer Git version and vice versa. (Use a --mirror
clone to copy all references. Decide whether to keep the remote, and if so, whether to update the fetch
line, once you have the clone.)
Obviously, there are new features (new push.default
settings, for instance, and git worktree add
) that older Gits will not understand or use, but the actual repository format itself is still the same.