使用 Git 同步部署代碼(二) - Git Hook 同步

導語

前文配置好了裸倉庫和本地同步,剩下的就是倉庫和正式目錄之間的自動部署。html

正式目錄使用 Git 鏈接裸倉庫

一樣是分爲兩種狀況,一種是有代碼,個人狀況不只是有代碼,並且遠端還有 GitHub;另外一種是無代碼,新建。nginx

已有代碼

  1. 切換到正式目錄中,再添加一個遠端倉庫,也就是同服務器中的裸倉庫,git remote add git_library /you_path/my_laravel.git
  2. pullpush 測試一下是正常的。一個插曲,由於編輯器還開着 FTP 同步,開始老是出錯😓。

新建項目

  1. clone 代碼到正式目錄 git clone /you_paht/my_laravel.git

配置 Git Hook

  1. 接下去切換到裸倉庫的目錄中,能夠看到 hooks 目錄下是有不少示例的hooks
  2. hooks 目錄下新建 post-update 文件,編輯完成後設置權限 chmod +x post-update, 文件以下
#!/bin/sh
unset GIT_DIR
DIR_ONE=/usr/local/nginx/html/myLaravel/  #正式目錄
cd $DIR_ONE
git pull git_library master #新建項目 remote 默認是 origin

通過測試沒有問題。
由於我是在已有的項目中進行操做,遇到各類問題。一個問題是提示沒有權限去修改文件。同步使用的是 git 用戶,代碼文件的全部者是 www-data。最終的解決辦法是將 git 添加近 www-data 用戶組 usermod -a -G www-data git,同時正式目錄執行 chmod -R g+wlaravel

結語

本覺得很簡單的流程,沒想到過程一波三折。主要問題是在已有的項目中進行部署,若是是新項目會簡單不少。git


參考資料:用 Git 鉤子進行簡單自動部署git hook實現代碼自動更新shell

相關文章
相關標籤/搜索