我發現了一個很不錯的(優雅)的解決方案,我在Caius Theory Website
它基本上是一個純倉庫開始,改變了工作樹到Web服務器文件夾。之後,它使用一個post-receive鉤子來在接收到的每一次推送後更新工作樹。一個優雅和易於遵循的程序!
附加在該文章中,我添加了一個軟鏈接「git的」目錄從網站位置回git倉庫位置設置:
ln -s /home/caius/git/somesite.git/ /home/caius/vhosts/somesite.com/htdocs/.git
這樣我可以簽在網絡上的另一個分支登錄到服務器並使用網站文件夾中的「git checkout」!
我還對here的Python腳本「ygit-push-all.py」稍作了修改,以更新我的多臺機器,這些機器都使用不同的配置文件運行相同的框架代碼。你甚至可以爲每個服務器設置一個分支(如Demo/Development)。
此外,我增加了以下的別名到我的全球混帳配置文件:
[alias]
push-all = !ygit-push-all.py
check-all = !sh -c 'git branch -r -v | grep master | awk \"{ print \\$1, \\$2 }\"'
混帳推,所有將更新所有我的遠程位置
混帳檢查所有會告訴我每個遙控器的轉速主人分支是
爲什麼你不保持一個正常的存儲庫,而不是一個在你的服務器上的裸機?並直接推送/服務? – Dogbert 2011-01-06 11:41:40
@Adam:我最初嘗試過,但後來當我嘗試推送(git push web-server)時,出現此錯誤:remote:error:默認情況下,更新非裸倉庫中的當前分支被拒絕,因爲它將使索引和工作樹不一致 – 2011-01-06 11:44:08