git推送到服務器自動同步到站點目錄

分幾個步驟 git

  • 在服務器上建立裸版本庫
  • 建立web目錄
  • 本地初始化版本庫
  • 本地克隆裸版本庫
  • 設置裸版本庫的鉤子post-receive
  • 本地推送
  • 裸版本庫接收到推送內容後自動檢出到web目錄實現同步

建立裸版本庫: web

[root@localhost]$ mkdir /home/workspace
[root@localhost]$ cd /home/workspace
[root@localhost]$ git init -bare wwwroot.git



在home/workspace目錄下建立了一個wwwroot.git的裸版本庫

建立web目錄: shell

[root@localhost]$ mkdir -p /home/website/wwwroot



本地初始化一個版本庫
[root@admin.pc]$ cd e:
[root@admin.pc]$ git init local.git



這樣在e盤下建立了一個 local.git的本地版本庫目錄
[root@admin.pc e:/local.git/]$ git clone ssh://root@xxx.xxx.x/home/workspace/wwwroot.git



使用ssh協議從服務器上克隆裸版本庫內容,這裏若是沒有配置公鑰的話,會提示輸入密碼。

設置鉤子 bash

[root@localhost]$ cd /home/workspace/wwwroot.git/hooks
[root@localhost]$ cat > post-receive <<EOF
>#!/bin/bash
>git --work-tree=/home/website/wwwroot checkout -f 
>EOF
[root@localhost]$ chmod +x post-receive



在服務器裸版本庫目錄下有一個hooks目錄,進去後添加一個post-receive的文件,將上面>開頭的幾行代碼輸進去,能夠用vi,我這裏用的cat,保存後記得使用chmod將這個文件賦予可執行權限,成爲一個shell腳本。其中 --work-tree對應站點文件目錄

而後就能夠開始從本地開發了,在本地版本庫工做區裏開發,而後使用git push指令推送到遠程裸版本庫,鉤子會post-receive自動生效,將文件檢出到--work-tree目錄裏,實現同步。 服務器

第一次push可能會有一些提示,由於裸版本庫還什麼都沒有,你可能須要 git push origin master寫全命令,以後就不必了。 ssh

相關文章
相關標籤/搜索