Git

使用 git 在伺服器上部署開發和主分支

  • April 6, 2015

我正在使用git一個django網路項目。我的伺服器上有一個裸露的 git 儲存庫,並將我的送出從本地機器推送到其中。我的本地機器上也有一個測試伺服器,但我想在伺服器上有 2 個版本的網站。一個版本作為實時站點(主分支),一個版本作為測試伺服器(開發分支)。所以我需要2個工作目錄。

我想用post-receive鉤子來

  1. 更新我的主分支工作目錄(用於伺服器上的實時站點)
  2. 更新我的開發分支工作目錄(用於我在伺服器上的測試站點)

通常我會做

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/path/www.example.org git checkout -f
$ chmod +x hooks/post-receive

但我猜 GIT_WORK_TREE 似乎不是正確的選擇?有沒有更好的辦法?

如何定義分支的工作目錄?

根據digitalocean而不是 GIT_WORK_TREE 的文章,您需要 –work-tree 和 –git-dir 選項的組合:

git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f

對於接收後腳本,它最終的構造與您所擁有的略有不同:

#!/bin/bash
while read oldrev newrev ref
do
   if [[ $ref =~ .*/master$ ]];
   then
       git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
   fi
done

建議:

#!/bin/sh

echo
echo "*** Moving to Live ***"
echo

cd /path/to/project || exit
unset GIT_DIR
git pull origin master

echo
echo "*** Pulling to Live ***"
echo                                               

/etc/init.d/nginx restart
#exec git-update-server-info

從我的伺服器上拿來,對我來說效果很好。

不要忘記修復路徑、遠端和重啟命令。

引用自:https://serverfault.com/questions/680602