Собственно цель данной статьи - поведать об одном из самых простых способов развертывания на сервере с помощью git'а и его хуков.
 
	Предисловие: данная статья предполагает что Вы понимаете что такое VCS, в часности гит и уже им пользовались
 
	Развертывание проходит в 3 этапа
 
		Пуш в репозиторий размещенный на нашем сервере
	
	
		Тригер хука на сервере
	
	
		Выволнение нужного нам скрипта, в данном случае чекаут из репозитория в нужную нам папку
	
	Статья на примере работы с Centos 7 в качестве продакшн сервера и Windows 10 в качестве дев-машины. 
 
	Авторизироваться будем по ssh, и для начала нужно сгенерировать ssh ключ. Сгенерировать его можно, к примеру, у тилитой ssh-keygen, которая идет в составе git для windows
 
	Из CMD выполняем:
 
ssh-keygen -t rsa
	Следуем инструкциям (вас спросят куда положить ключ, можете просто нажать enter, ключ будет сохранен в C:\Users\username\.ssh), устаналиваем пароль, получаем ключ, файл будет называться примерно так id_rsa.pub
 
	Далее нужно настроить гит репозиторий на сервере.
 
	Устаналиваем git
 
$ yum install -y git
	Создаем гит юзера, для ssh авторизации, указываем пароль
 
$ sudo adduser git
$ sudo passwd git
	создаем папку для ssh ключей
 
$ su git
$ cd
$ mkdir .ssh
	Скопируйте на сервер (через фтп или другим удобным фам способом) ранее сгенерированый паблик ключ, к примеру в папку tmp, в итоге получаем /tmp/id_rsa.pub
 
	Добавляем этот ключ в список доверенных
 
$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
	Переходим к созданию гит репозитория, к примеру в папке /home/git
 
$ cd /home/git
$ mkdir project.git
$ cd project.git
$ git --bare init
	project.git - можете назвать как угодно.
 
	Длее нужно создать хук в папке /home/git/project.git/hooks
 
	Создаем файл post-receive с содиржанием
 
#!/bin/bash
echo 'post-receive execute start' >> hooks.log
 
TARGET="/home/myproject"
GIT_DIR="/home/project.git"
BRANCH="master"
while read oldrev newrev ref
do
        # only checking out the master (or whatever branch you would like to deploy)
        if [[ $ref = refs/heads/"$BRANCH" ]];
        then
                echo "Ref $ref received. Deploying ${BRANCH} branch to production..." >> hooks.log
                git --work-tree="$TARGET" --git-dir="$GIT_DIR" checkout -f
		echo "Deploying done" >> hooks.log
        else
                echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server." >> hooks.log
        fi
done
	TARGET - путь к папке в которую будет происходить копирование из репозитория
 
	GIT_DIR - путь к папке с гит репозиторием
 
	BRANCH - ветка из которой будем забирать
 
	Настройте данные переменные под себя.
 
	Репозиторий готов, возвращаемся на нашу дев-машину, и создаем из папки с проектом локальный репозиторий. Это можно сделать и спомощью CMD или любой програмы для управления гит (к примеру я пользуюсь SourceTree)
 
	Выполняем в CMD
 
cd /d D:\path\to\project
git init
	path\to\project соотвественно меняете на путь к папке с вашим проектом.
 
	Комитим изменения, подключаем удаленный репозиторий на сервере и пушим. (если вы создали репозиторий в пустой папке, скопируйте в нее файлы вашего проекта)
 
git add .
git commit -m 'initial'
git remote add origin git@myserver.com:/home/git/project.git
git push origin master
	myserver.com - домен или ИП адрес вашего сервера.
 
	Гит спросит пароль от юзера, вводим пароль который указывали при его создании
 
	После пуша на удаленном сервере выполнится хук и файлы будут скопированы в папку для развертывания.