I'm fairly sure that Git stores the entire Unix file permission mask. (On files, obviously, not directories.)
In fact, here's a simple test, on Unix:
dave@serenity:~$ mkdir foo
dave@serenity:~$ cd foo
dave@serenity:~/foo$ git init
Initialized empty Git repository in /home/dave/foo/.git/
dave@serenity:~/foo$ touch a
dave@serenity:~/foo$ ls -l a
-rw-r--r-- 1 dave dave 0 2009-01-12 22:29 a
dave@serenity:~/foo$ git add a
dave@serenity:~/foo$ git commit
Created initial commit ad1cedb: Initial commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
dave@serenity:~/foo$ chmod +x a
dave@serenity:~/foo$ git commit -a
Created commit 1e846b4: New mask
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 a
dave@serenity:~/foo$
I'm not sure how to fix it on Windows, but the repository definitely stores permissions.