В настройках проекта на GitHub есть такая штука как Service Hooks (https://github.com/username/project/admin/hooks), там есть хук «Post-Receive URLs», в котором можно указать адрес, по которому GitHub будет отправлять инфу о push'ах.
Таким образом схема работы простая: настраиваете хук, делаете коммит, GitHub пуляет ифну по указанному вами адресу, ваш скрипт на сервере на основе полученной инфы pull'ит код и делает все остальное что нужно сделать для деплоя.
У нас так :)