作web開發時,之前都是寫好了一個新功能要發佈到服務器上都是使用FTP上傳覆蓋原來的代碼,這樣作很麻煩,首先要打開FTP程序,而後進入指定文件夾,而後上傳,並且用FTP上傳常常容易出錯老是有個別文件會由於權限或者各類奇葩的緣由上傳失敗。。。。。。用git來部署就不會有這樣的問題。
git
若是你的項目是一個團隊在作,可能還須要一個公共倉庫如Github或者GitCafe,git.oschina.net,git.csdn.net等,使用他們也能夠部署到遠程的服務器。方法是,設置GitHub等的hook(國內git網站叫push鉤子),它的做用是,每次咱們從本地push改變到這些倉庫時,這些倉庫會向指定鏈接(例如本身的vps服務器)發生post請求(不止一種請求,但經常使用post請求,請求的內容也因倉庫不一樣而不一樣),咱們能夠設置本身的vps生產服務器一旦接收到這個post請求就開始部署,能夠寫bash腳本或者Python腳本實現,或者直接網上找別人寫好的。web
還有另外一種方法則是不適用公共倉庫來發生hook而是直接使用vps生產服務器來作這些事情(代碼管理+部署生產環境的代碼),下文便討論如何實現。bash
cd /var mkdir git && cd git mkdir your_site.git && cd your_site.git git init --bare
--bare的意思是,該文件夾是咱們的代碼倉庫,它將不會放源代碼而只是作版本控制。服務器
咱們將會使用post-receive鉤子,更多鉤子及含義能夠參考git文檔 在your_site.git文件夾中dom
ls
你能夠看到有hooks文件夾已經爲咱們建立好了,並且裏面也有各類鉤子的樣例ssh
cd hooks
建立咱們本身的post-receivepost
cat > post-receive
按回車後提示咱們繼續輸入,接下來輸入的動向都會被放入post-receive文件中。網站
#!/bin/sh git --work-tree=生產環境網站文件夾位置 --git-dir=/var/git/your_site.git checkout -f
輸入完成後按ctrl + D
保存,git-dir
指的是倉庫的地址, work-tree
則是存放代碼的位置,也就是咱們的網站的源代碼的位置。 接下來則是要保證它能夠運行:spa
chmod +x post-receive
通常狀況是你已經有了本身的git項目了,那麼只須要添加vps的倉庫地址就好了.net
git remote add myVPS-sitename ssh://user@mydomain.com/var/git/your_site.git
'myVPS-sitename'只是這個遠程鏈接的名稱,你能夠同時有多個遠程鏈接,每次push的時候指定名稱便可將代碼上傳到不一樣的倉庫。
若是你本地尚未項目代碼:
cd 項目地址 git init
添加一個README.ME文件後
git add . git commit -m "項目初始"
接下來咱們即可以將代碼push到vps了:
git push myVPS-sitename master
master
指定的是master分支,若是你有其餘分支也能夠push其餘分支。.