I got git problem: error: unable to create temporary sha1 filename when pushing to a remote repository. The fix is rather easy.
On both your local and remote repositories perform the following magic:
git fsck
git prune
git repack
git fsckThe last fsck should not report any problems.
You may also need to
chown git:git /pah/to/reposon your server. But this is most likely not the reason for the above error.