Git, a de facto industry standard version control system (VCS), was designed to store small to medium files. Why would anyone store big files in a VCS anyway?
People want to store big files in the VCS's.
Images, videos, audio files and other types of binary assets.
Git frequently needs to compare files and calculate their hashes.
Bigger file ⇒ longer file processing time.
More bigger files ⇒ much longer repository processing time.
"All problems in computer science can be solved by another level of indirection."-- David J. Wheeler
Git Annex is much more than just a solution to Git's limitations.
Git Annex needs to know where the files are actually stored. A lightweight registry with all files' locations is stored in the Git objects. Even for the offline repositories, even for the files we don't have locally.
vifon@hell-latitude ~/annex λ git annex whereis my-file.txt whereis my-file.txt (5 copies) 0c60bf3b-6d49-46eb-bc1e-324cd0c435f6 -- [server] 5784d71e-5ba0-4d35-a6b0-b1bcb0e49fed -- [NAS] 9cf5d522-7cc2-4ea9-883a-6a9d1fd83eb5 -- dell [here] a5d11164-f0fb-49d0-9dfd-a11eaf745496 -- thinkpad df2d03e7-53d0-439d-9b0b-27cdb4345319 -- [USB HDD] ok