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