From Pro Git chapter "Packfiles"
The original format in which Git saves objects to disk is called the free format of the object. However, sometimes Git accumulates several of these objects into a single binary file called packfile in order to save space and be more efficient. Git does this if you have too much when you run the Git gc command manually, or if you click on a remote server.
As you can see, Git does not always save each version of the file separately and makes use of the differences. In addition, Git compresses each file with zlib, which is very effective, at least for open source files.
However, it is not easy to say that Git uses more or less space than SVN. One of the reasons for this is that SVN only stores the latest revision locally, and with Git, you have a full copy of the repository on your computer. Thus, you cannot compare the space used by a single revision in SVN with the space used by a full repository in Git.
And comparing the space used by the SVN repository on the server with the Git spatial repository depends at least on the specific history of the changes and the types of files that you store in them.
source share