de acordo com o artigo digitalocean em vez de GIT_WORK_TREE você precisa de uma combinação de opções --work-tree e --git-dir:
git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
e para o script pós-recebimento, acaba sendo um construto um pouco diferente do que você tem:
#!/bin/bash
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
fi
done