http://ju.outofmemory.cn/entry/16893
下面簡單的描述我在某個項目中布署的一個git服務,并且本地送出更新後,伺服器将自動更新代碼到線上代碼的倉庫。
root 使用者ssh登入伺服器,建立一個新使用者用來給git登入及其操作,比如這裡我建立一個名為“git”的使用者:
$ sudo add user git
進入到 /home/git 檔案夾中,檢視是否有 .ssh/ 目錄, 如沒有:
$ mkdir .ssh
進入 /home/git/.ssh 檔案夾中,建立檔案 authorized_keys
等待
進入 ~/.ssh/ 目錄,檢視是否有 id_rsa.pub 檔案,如沒有:
$ ssh-keygen
一路回車,完成後,便可發現 ~/.ssh/ 目錄中有 id_rsa.pub, 複制其内容,粘貼到上面操作伺服器的 authorized_keys 檔案中
測試是否密鑰登入成功
$ ssh git@yourserverip
進入 /opt/git 目錄, 如沒有,建立之
建立倉庫檔案夾,比如:
# path: /opt/git $ mkdir gitdemo
初始化為遠端倉庫
$ git init --bare
上面的步驟已經完成了git遠端倉庫的建立,此時你隻要将你本地的git代碼倉庫 git remote add git@yourserverip:/opt/git/gitdemo,便可送出與更新代碼了。
比如我機器上的開發目錄為:~/www/gitdemodev, 進行下面操作:
現在你已經本地的代碼成功的送出到了遠端倉庫中,隻需在你團隊成員電腦上作相同操作,便可利用git協同開發了,注意把各自電腦的 id_rsa.pub 内容複制進伺服器的 authorized_keys 檔案中。
假設你的項目也是跑在此台伺服器上,那自動布署代碼就很簡單了,比如你的線上服務代碼在 /var/www/demo 檔案夾中。
你先初始化代碼庫:
然後你可以通過 git pull 來更新代碼。
當然這樣是手動了,我想要的是本地送出更新後,伺服器能自動的 git pull代碼到最新,于是我們就要借助 git hook了。
進入到 /opt/git/gitdemo 檔案夾中,會發現 .git/hook 檔案夾在裡面,進入到 hook 中,裡面有很多的 sample 腳本,這裡我們隻需要用到 post-update。
可以看到裡面其實就是一些shell腳本,你要做的就是把 git pull寫進去。當使用者送出後,便會調用post-update腳本的。
這些腳本顯然是可以做很多事的,隻要你想得到,要了解各腳本何時調用,google吧。
【注】伺服器中與git使用者有關的檔案夾及檔案,請:
如何聯系我:【萬裡虎】www.bravetiger.cn
【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/