Несмотря на то, что он довольно старый, крайне нежелательно переходить к рабочему дереву.https://git.wiki.kernel.org/index.php/GitFaq#Unexpected_behavior
Лучшим способом было бы создать голое хранилище, отражающее рабочее дерево веб-сайта.
Все, что нужно, - это хранилище без рабочего дерева или, скорее, без проверенных файлов.из.Иерархия существует с учетом всех вещей и может быть проверена.Другими словами, он выступает в роли хоста только для изменений.
Не зная иерархии каталогов, с которой вы работаете для своего веб-сайта, я предполагаю, что это стандартный макет веб-сайта с использованием chrooted home EG: / home /user / www
На сервере, использующем ssh с установленным git:
Создать рабочее дерево текущего сайта
cd /home/user/public_html
git init
git add .
git commit -m "Initial Commit"
Создать пустой репозиторий для удаленной отправки изваша локальная система
mkdir /home/user/deploy.git
cd /home/user/deploy.git
git init --bare
Свяжите ваш репозиторий рабочего дерева и ваш репозиторий голого развертывания
cd /home/user/public_html
git remote add deploy /home/user/deploy.git
git remote show deploy
* remote deploy
URL: /home/user/deploy.git
git push deploy master
Теперь настройте новое репо в вашей локальной системе
git clone ssh://user@example.com/home/user/deploy.git
git branch -a
*master
remotes/origin/HEAD
remotes/origin/master
Теперь мы настроили 2 хука, чтобы мгновенно вносить изменения в ваше удаленное веб-репо, когда вы нажимаете на него или если кто-то другой, кому вы предоставляете доступ, нажимает на него.Поскольку игнорирование git config receive.denyCurrentBranch приведет к проблемам в долгосрочной перспективе
На удаленном сервере включите пост-обновление для развертывания
cd /home/user/deploy.git/hooks
mv post-update.sample post-update
vi post-update
Измените хук после обновления на приведенный ниже иsave
#!/bin/sh
echo "Pulling changes into public_html [deploy post-update]"
cd /home/user/public_html || exit
unset GIT_DIR
git pull deploy master
exec git update-server-info
Теперь мы настроили ваше рабочее веб-дерево, чтобы подтолкнуть его изменения к развертыванию, если что-то зафиксировано в нем.
cd /home/user/public_html/.git/hooks
mv post-commit.sample post-commit
vi post-commit
Затем измените хук после фиксации на следующий
#!/bin/sh
echo "Pushing changes to deploy [public_html post-commit]"
git push deploy
У вас все еще есть возможность оформить рабочее веб-дерево, если это необходимо.Это позволит вам перенести ваши изменения из развертывания в рабочее дерево вашей сети, когда вы нажмете мастер своей локальной системы.Вы можете выполнять ветвление, перебазирование, возврат и т. Д., Не затрагивая рабочее дерево вашей сети, не беспокоясь о маркерах конфликтов, вместо этого просто используя простой репозиторий развертывания.Если вам нужен больший контроль над тем, что совершено, вы можете использовать пост-получение вместо пост-обновления или вместе с ним.
Надеюсь, это поможет кому-то еще, желающему сделать то же самое, что и ОП.