Это обобщено из Использование Git для управления веб-сайтом
Ключом к процессу является ловушка на стороне сервера «post-receive» (подробнее о перехватах git на странице « Настройка Git - Git Hooks» и справочной странице githooks ). Эта ловушка запускается после того, как сервер получил все данные.
Как только сервер получает данные, он запускает git checkout -f
опцию -f, чтобы принудительно оформить заказ, даже если существуют локальные различия.
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
Поместите это в hooks/
каталог как post-receive
и исполняемый файл. Конечно, путь меняется на то, где у вас есть файлы вашего веб-сервера (использование GIT_WORK_TREE
устанавливает переменную окружения, так что вам не нужно манипулировать точечными файлами и настройками git на сервере).
Для отката нужно пометить каждый релиз (это можно сделать также как часть перехвата пост-фиксации). Пометив релиз, можно легко определить место, к которому необходимо выполнить откат, хотя это, вероятно, предполагает вход на сервер и проверку этого тега.