it is written in git documentation that for every commit snapshot is done. It is strongly highlighted that git does not store files as series of diffs but rather as series of snapshots. It is highlighted also that snapshot contains a copy of file (if the file was changed of course). So, let's immerse to it:
git init
git add file.bin # (file.bin has 1024 MB)
git commit -m "."
ls -l --block-size=M -a
drwxr-xr-x 1 john 197121 0M lis 13 08:27 .git/
-rw-r--r-- 1 john 197121 1024M lis 13 08:19 file.bin
echo "X" >> file.bin # file was changed
git commit -am "Changed file.bin"
ls -l --block-size=M -a
drwxr-xr-x 1 john 197121 0M lis 13 08:27 .git/
-rw-r--r-- 1 john 197121 1025M lis 13 08:19 file.bin
So, .git'size is still < 1 MB. It shows that file.bin was not copied. Why?