Я довольно новичок в git, но я пытаюсь настроить git для развертывания моего веб-сайта на моем сервере.
Я создал голое хранилище с именем etw.git
на своем сервере и создал post-receive
в пределах hooks
, который имеет следующее:
#!/bin/sh git --work-tree=/home/username/www --git-dir=/home/username/www/etw.git checkout -f
Я создал локальное хранилище с именем etw.git
и инициализировал его.
Затем я сделал git remote add live ssh://username@mydomain.com:18765/home/username/www/etw.git
Моя проблема в том, что когда я выполняю git push live master
, это будет успешно, но обновленные файлы будут отображаться на моем веб-сайте только в том случае, если до выполнения git push live master
я использую chmod -R +x hooks
для изменения разрешений моей папки /home/username/www/etw.git/hooks
.
Вот как hooks
выглядит перед использованием chmod: ![enter image description here](https://i.stack.imgur.com/66eLa.png)
И как только я делаю chmod -R +x hooks
, это выглядит так: ![enter image description here](https://i.stack.imgur.com/GmQGI.png)
Будет работать только Git push ПОСЛЕ ТОГО, КАК я делаю chmod -R +x hooks
.
Но после того, как я git push live master
, разрешения сбрасываются (назад к первому изображению), и я должен выполнить chmod -R +x hooks
снова перед повторным нажатием.
Также при отправке на сервер он выталкивает ВСЕ 4000+ объектов вместо только измененных.Это занимает много времени.
Наконец, после отправки на сервер, мой post-receive
теряет #
и просто становится:
!/bin/sh git --work-tree=/home/username/www --git-dir=/home/username/www/etw.git checkout -f