2011-02-08 97 views
10

我用這個指南,使用git來自動發佈在我的網站我的變化,當我推到我的遠程起源的Git倉庫:使用Git發佈到一個網站

http://www.lwp.ca/james/2010/03/using-git-to-manage-online-website-projects/

這裏是我的/鉤/後更新文件:

cd ../../public_html/dir/wbg 
env -i git pull 

這裏是我的目錄結構:

/home/git/wbg.git < - 我的遠程git倉庫

/家/的public_html/DIR/WBG < - 我的Web文件夾

當我運行

git push origin master 

存儲庫更新,但我的Web文件夾仍然是空的。有任何想法嗎?

編輯:如果任何未來的流量看到這一點,我的真正問題是,你的遠程起源和你的目標網站目錄必須是git存儲庫。你不能將它設置爲將你的項目複製到一個新的文件夾,除非該文件夾也是一個git倉庫。

+0

您是否也按照文章中的建議做了`chmod + x`? – eckes 2011-02-08 21:09:32

+0

在這個問題上提供的鏈接是死 – 2014-01-07 04:45:50

回答

6

不是很多要離開這裏,但我可以報告,我成功地使用類似方法。

爲了我的目的,我打電話給我的裸露服務器存儲庫的「集線器」和我的面向網絡的存儲庫的「總理」。確保你已經在你的服務器htdocs目錄(Prime)中正確初始化了一個git倉庫,並且將更改推送到裸存儲庫(Hub)或將它們拉入。

這是我使用的post-update鉤子,它是在我的Hub存儲庫的掛鉤目錄中:

#!/bin/sh 

echo 
echo "*** Pulling changes into Prime" 
echo 

cd /path/to/htdocs/ || exit 
unset GIT_DIR 
git pull hub master 

exec git-update-server-info 

確保這是可執行的!如果有疑問,只需編輯post-update.sample文件並在完成後刪除.sample擴展名。回顯的文字給出了很好的反饋,即複製實際上正在發生。如果你沒有看到這些文字,那麼它就不會拉動這些變化。如果你不打算調用你的遠程倉庫「集線器」,把它替換爲「origin」或你決定使用的任何東西。

作爲一項預防措施,使我國總理和本地資源庫不要太不正常了,我有這個作爲我的總理post-commit鉤:

#!/bin/sh 

echo 
echo "*** Pushing changes to Hub" 
echo 

git push hub 

然後我就可以拉從輪轂的變化到我本地存儲庫。

+0

我嘗試了,我得到這個錯誤: 遠程: 遠程:***拉動轉變爲總理 遠程: 遠程:致命的:不是git倉庫(或任何父目錄):.git 遠程:致命:不是git存儲庫(或任何父目錄):.git – Citizen 2011-02-10 21:59:22

1

您可能會先獲取更新後的內容以回顯一些調試輸出。標準輸出和標準錯誤輸出都轉發到另一端的git send-pack,所以你可以簡單地回顯消息,你會在客戶端上看到你做了git push的東西。我假設你遵循指導詞,使更新後的腳本可執行文件,克隆到網絡文件夾回購等。

14

您可以在http://toroid.org/ams/git-website-howto找到一個更好的選擇,它只使用一個git存儲庫,並允許所有元數據和以前的歷史記錄保留在DocumentRoot之外。

您使用的指南和鏈接到另一篇文章的推薦鏈接都基於此鏈接,但我鏈接的鏈接似乎是指導新用戶在#git IRC頻道中的首選方式。