You mean like when nothing has the file open any more, or doing a commit with every flush to disk? I think the latter is a bit excessive.
One of the FUSE implementations mentioned in this post may do something like that.
File handle refcounting would be nice to avoid spamming Git with commits, indeed.
I tried this with mod_dav_svn back in the day and never really managed to convince myself that commit-on-write is a good idea.
I have been looking for that as well. Some sort of 'implicit versioning', a bit like how version history works for Google Docs [1], but instead for the filesystem.