是否可使用git push
部署網站? 我有一種預感,它與使用git鉤子在服務器端執行git reset --hard
有關,可是我將如何實現呢? html
我最終建立了本身的基本部署工具,該工具會自動從存儲庫中提取新更新-https: //github.com/jesalg/SlimJim-基本上,它會偵聽github post-receive-hook並使用代理觸發更新腳本。 git
咱們使用capistrano來管理部署。 咱們構建了capistrano以部署在登臺服務器上,而後與咱們全部的服務器運行rsync。 github
cap deploy cap deploy:start_rsync (when the staging is ok)
使用capistrano,咱們能夠在發生錯誤的狀況下輕鬆回滾 web
cap deploy:rollback cap deploy:start_rsync
我對基督徒的解決方案的見解。 api
git archive --prefix=deploy/ master | tar -x -C $TMPDIR | rsync $TMPDIR/deploy/ --copy-links -av username@server.com:/home/user/my_app && rm -rf $TMPDIR/deploy
我正在使用toroid.org提供的如下解決方案,該解決方案具備更簡單的掛鉤腳本。 服務器
在服務器上: app
$ mkdir website.git && cd website.git $ git init --bare Initialized empty Git repository in /home/ams/website.git/
並將鉤子安裝在服務器上: ssh
$ mkdir /var/www/www.example.org $ cat > hooks/post-receive #!/bin/sh GIT_WORK_TREE=/var/www/www.example.org git checkout -f GIT_WORK_TREE=/var/www/www git clean -f -d # clean directory from removed files $ chmod +x hooks/post-receive
在您的客戶上: 工具
$ mkdir website && cd website $ git init Initialized empty Git repository in /home/ams/website/.git/ $ echo 'Hello, world!' > index.html $ git add index.html $ git commit -q -m "The humble beginnings of my web site." $ git remote add web ssh://server.example.org/home/ams/website.git $ git push web +master:refs/heads/master
而後發佈,只需鍵入 post
$ git push web
網站上有完整的描述: http : //toroid.org/ams/git-website-howto
我這樣作的方法是,在個人部署服務器上有一個裸露的Git存儲庫,用於推送更改。 而後,我登陸到部署服務器,更改成實際的Web服務器docs目錄,而後執行git pull。 我不使用任何鉤子來嘗試自動執行此操做,這彷佛比它值得的麻煩更多。