Я нашел очень хорошее (и элегантное) решение для меня на веб-сайте Caius Theory
В основном оно начинается с чистого репозитория и меняет рабочее дерево на папку веб-сервера.После этого он использует хук post-receive для обновления рабочего дерева после каждого полученного push-запроса.Изящная и простая процедура!
В дополнение к настройке в этой статье я добавил каталог с «мягкой привязкой» .git из папки сайта в папку репозитория git:
ln -s /home/caius/git/somesite.git/ /home/caius/vhosts/somesite.com/htdocs/.git
Таким образом, я могу оформить другую ветку на веб-сервере, войдя в нее и используя «git checkout» в папке сайта!
Я также использовал небольшую модификацию Python-Script «ygit-push»-all.py "из здесь , чтобы обновить несколько моих машин, на которых все работают с одним и тем же кодом инфраструктуры с использованием разных файлов конфигурации.Вы даже можете настроить ветку для каждого сервера (например, Demo / Development).
Кроме того, я добавил следующие псевдонимы в мой глобальный конфигурационный файл git:
[alias]
push-all = !ygit-push-all.py
check-all = !sh -c 'git branch -r -v | grep master | awk \"{ print \\$1, \\$2 }\"'
git push-all обновит all мои удаленные местоположения
git check-all покажет мне обороты, на которых находится каждая удаленная master ветка