Let’s say there is a SHA -920cae53e0f622d6804f063c04a93dbc3a11b7ca
And this will be stored at
.git/objects/92/0cae53e0f622d6804f063c04a93dbc3a11b7ca
Note: There is a split in the first two characters that will improve the performance of the file system. As of now not all the objects are stored in the same directory.
Objects that are stored above are referred to as Loose objects.
When you start up with your repo, you mostly have loose objects. As the number goes higher, it becomes inefficient and they will be stored in a pack file. Such objects are called packed objects.
git gc
is what you run to pack-objects (Usually loose objects that are not needed and few weeks old are also removed and with --prune=<date> option. Like when you amend a commit. The old commit object is no longer needed.)