直到今天我用以下方式git的:在我的網絡服務器作爲文檔根使用Git來維護網站
克隆上
主回購/路徑/ WWW我的電腦
我通常在PC上做了很大的改變,並推送到服務器。做完這些之後,我不得不「git重置HEAD」和「git checkout」。在服務器上。有時候我會在服務器上做一些小的改動,然後把它拉回到PC上。這一切都工作正常,工作得很好,直到今天的時候,就推,git的抱怨
remote: error: refusing to update checked out branch: refs/heads/master
etc.
爲什麼,6-12個月後,這應該現在失敗了呢?
在找到http://toroid.org/ams/git-website-howto感謝StackOverflow問題後,我將/ path/www複製到/path/www.git,並將其作爲'裸'回購。文檔根目錄保留在/ path/www。我添加了一個包含「GIT_WORK_TREE =/path/www checkout -f」的.git/hooks/post-receive腳本。
修改PC上的配置以指向www.git倉庫後,我現在可以像以前一樣推送,並且更改將在文檔根目錄中上載和更新。我有幾個關於這個問題:
該howto意味着工作樹沒有.git元數據。這是真的嗎?我試着刪除它的.git目錄,但「git status」不再有效。將GIT_DIR設置爲/path/www.git並沒有幫助,因爲git說回購(在/path/www.git中的回購實際上並不是回購)。
如果我更新index.html並在PC上添加somefile.html並推送這些更改,這些文件將更新/添加到服務器的doc根目錄中。但是,如果我在doc根目錄中使用「git status」,它會告訴我index.html已被更改,somefile.html是未跟蹤的文件。我天真地期待「checkout -f」會將工作樹更新到我從PC上推送的內容。我可以做到嗎?
謝謝,現在一切都很清楚。有時,在服務器上進行快速vi編輯比在PC上執行emacs快,然後按下,重置HEAD,結帳等 - 尤其是在糾正某些我想要快速更新的內容時。因此,我在服務器端的變化。也許我現在不會這樣做:-) – 2012-03-20 13:43:17